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); }
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'); });
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; }
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'); } }
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');
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!