Rumah > rangka kerja php > Laravel > Bagaimana untuk mengubah hala pengguna yang tidak log masuk dalam Laravel

Bagaimana untuk mengubah hala pengguna yang tidak log masuk dalam Laravel

PHPz
Lepaskan: 2023-04-07 17:23:16
asal
1014 orang telah melayarinya

Laravel ialah salah satu rangka kerja pembangunan PHP yang paling popular hari ini. Ia menyediakan banyak ciri dan alatan berguna yang boleh membantu kami membangunkan dan menguji aplikasi web dengan cepat. Salah satu fungsi penting ialah sistem pengesahan pengguna (Authentication). Dalam kebanyakan aplikasi, kami perlu memastikan bahawa hanya pengguna yang disahkan boleh mengakses halaman dan fungsi sensitif. Artikel ini akan memperkenalkan cara melaksanakan lompatan pengguna tidak log masuk dalam Laravel dan memberikan anda beberapa petua dan cadangan berguna.

Gunakan perisian tengah untuk mengubah hala pengguna yang tidak dilog

Dalam Laravel, kami boleh menggunakan perisian tengah untuk mengendalikan permintaan. Middleware membantu kami melakukan tindakan tertentu sebelum atau selepas permintaan sampai kepada pengawal. Dalam aplikasi kami, kami boleh menggunakan middleware untuk menyemak sama ada pengguna sudah log masuk. Jika pengguna tidak log masuk, kami boleh mengubah hala mereka ke halaman log masuk.

Mula-mula, mari sediakan perisian tengah yang dipanggil tetamu. Kita boleh menciptanya menggunakan perintah Artisan php artisan make:middleware GuestMiddleware. Kemudian, kita boleh menulis kod dalam perisian tengah tetamu untuk menyemak sama ada pengguna telah log masuk:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }
    return $next($request);
}
Salin selepas log masuk

Di sini, kami menggunakan Auth::guard($guard)->check() untuk menyemak sama ada pengguna log masuk Sudah log masuk. Jika ya, kami akan mengubah hala pengguna ke halaman /home. Jika tidak, kawalan diserahkan kepada perisian tengah atau tindakan pengawal seterusnya.

Seterusnya, kami boleh menggunakan perisian tengah tetamu dalam definisi laluan kami. Sebagai contoh, kita boleh mentakrifkan laluan berikut dalam fail web.php:

Route::group(['middleware' => ['guest']], function () {
    Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
    Route::post('login', 'Auth\LoginController@login');
});
Salin selepas log masuk

Di sini, kami menggunakan perisian tengah tetamu pada keseluruhan kumpulan laluan. Ini bermakna apabila mengakses /log masuk dan menyerahkan borang log masuk, perisian tengah tetamu akan menyemak sama ada pengguna sudah log masuk. Jika pengguna sudah log masuk, mereka akan dialihkan ke halaman /home. Jika tidak, operasi pengawal akan diteruskan.

Gunakan pengawal pengesahan untuk melompat kepada pengguna yang tidak log masuk

Cara lain untuk melompat kepada pengguna yang tidak log masuk ialah menggunakan ciri dalam pengawal pengesahan. Dalam Laravel, kita boleh menggunakan beberapa ciri untuk melaksanakan fungsi pengesahan pengguna dengan mudah. Salah satu ciri ini ialah IlluminateFoundationAuthAuthenticatesUsers. Ciri ini mengandungi operasi untuk pengguna log masuk dan log keluar, serta logik ubah hala.

Mula-mula, mari kita buat pengawal yang dipanggil CustomLoginController dan gunakan ciri AuthenticatesUsers:

use Illuminate\Foundation\Auth\AuthenticatesUsers;

class CustomLoginController extends Controller
{
    use AuthenticatesUsers;
}
Salin selepas log masuk

Di sini, mari buat CustomLoginController menggunakan ciri AuthenticatesUsers.

Seterusnya, kita boleh mengatasi kaedah showLoginForm dan kaedah yang disahkan dalam sifat AuthenticatesUsers. Dalam kaedah ini, kami boleh menentukan halaman log masuk dan logik ubah hala:

use Illuminate\Foundation\Auth\AuthenticatesUsers;

class CustomLoginController extends Controller
{
    use AuthenticatesUsers;

    protected function showLoginForm()
    {
        return view('auth.login');
    }

    protected function authenticated(Request $request, $user)
    {
        return redirect()->route('home');
    }
}
Salin selepas log masuk

Di sini kami mengatasi kaedah showLoginForm untuk mengembalikan paparan "auth.login". Kami mengatasi kaedah yang disahkan untuk mengubah hala ke laluan "rumah".

Akhir sekali, kami boleh menentukan laluan berikut dalam fail web.php:

Route::get('login', 'CustomLoginController@showLoginForm')->name('login');
Route::post('login', 'CustomLoginController@login');
Route::get('home', function () {
    return view('home');
})->name('home');
Salin selepas log masuk

Di sini, kami menentukan laluan GET untuk halaman log masuk, laluan POST untuk menghantar borang log masuk , dan laluan GET halaman utama. Dalam CustomLoginController, showLoginForm dan kaedah yang disahkan yang kami tulis akan mengendalikan borang log masuk dan logik pengalihan.

Kesimpulan

Dalam artikel ini, kami memperkenalkan cara untuk melaksanakan lompatan pengguna tidak log masuk dalam Laravel. Terdapat dua cara untuk mencapai ini: menggunakan perisian tengah dan menggunakan pengawal pengesahan. Tidak kira kaedah yang anda pilih, anda boleh melindungi halaman dan ciri sensitif anda dengan memastikan hanya pengguna yang disahkan boleh mengaksesnya. Jika anda sedang membangunkan aplikasi Laravel, petua dan nasihat ini sepatutnya sangat berguna kepada anda.

Atas ialah kandungan terperinci Bagaimana untuk mengubah hala pengguna yang tidak log masuk dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan