Cara untuk mematikan log masuk pengguna dalam Laravel
Dalam sesetengah kes, anda mungkin perlu mematikan fungsi log masuk pengguna dalam aplikasi Laravel anda, seperti semasa penyelenggaraan atau semasa menguji semasa pembangunan. Mematikan log masuk pengguna tidak sukar, cuma ikut langkah di bawah.
Langkah 1: Lumpuhkan penghalaan
Untuk mematikan log masuk pengguna, anda harus melumpuhkan penghalaan yang berkaitan dengan log masuk pengguna terlebih dahulu. Laravel secara lalai mencipta laluan berikut untuk pengesahan pengguna:
Mungkin juga terdapat beberapa laluan berkaitan pengesahan lain dalam aplikasi anda. Jika anda ingin melumpuhkan semuanya, ulas mereka dalam fail penghalaan web anda.
Kod sampel:
// 禁用用户登录路由 // Route::get('login', 'AuthLoginController@showLoginForm')->name('login'); // Route::post('login', 'AuthLoginController@login'); // Route::post('logout', 'AuthLoginController@logout')->name('logout');
Langkah 2: Matikan perisian tengah pengesahan
Laravel menyediakan satu siri perisian tengah untuk mengendalikan fungsi berkaitan pengesahan. Antaranya, perisian tengah Authenticate digunakan untuk mengesahkan sama ada pengguna telah log masuk. Jika anda ingin mematikan log masuk pengguna, hanya alih keluar perisian tengah ini daripada aplikasi anda.
Kod contoh:
// 关闭验证中间件 // Route::middleware(['auth'])->group(function () { // // ... your routes requiring authentication // });
Anda juga boleh mengulas perisian tengah Sahkan jika anda tidak mahu mengalih keluarnya. Dengan cara ini, perisian tengah tidak akan didayakan, tetapi fungsinya masih boleh dipulihkan pada bila-bila masa.
Langkah 3: Log keluar semua pengguna yang sedang log masuk
Jika anda mempunyai pengguna yang log masuk ke aplikasi anda sebelum menutup log masuk pengguna, anda harus log keluar pengguna ini. Jika tidak, pengguna ini akan terus mengakses aplikasi melalui sesi sedia ada mereka, memintas tetapan yang mematikan log masuk pengguna.
Anda boleh menambah kod dalam pengawal AuthenticatesUsers atau LoginController anda untuk memastikan gangguan diminta sebelum log keluar semua pengguna:
Kod contoh:
// 在 AuthenticatesUsers 控制器的 logout 方法中添加以下代码 public function logout(Request $request) { $this->guard()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); // 中断请求 return response()->noContent(); }
Dengan cara ini, apabila ada ialah Apabila pengguna cuba log keluar, permintaan diputuskan sambungan dan sesiapa yang menulis sesi (seperti token CSRF) dihalang daripada mengambil sebarang tindakan yang sah.
Langkah Empat: Kosongkan Sesi dan Kuki
Akhir sekali, selepas melengkapkan langkah di atas, anda harus mengosongkan semua sesi dan kuki yang berkaitan untuk menghalang pengguna yang telah log masuk daripada terus mengakses aplikasi anda.
Dalam Authenticate middleware atau middleware lain, anda boleh mendaftarkan middleware SessionMiddleware dan StartSession sebagai middleware yang diluluskan untuk memastikan semua kuki sesi dikosongkan:
Kod sampel:
// 在您的 Authenticate 中间件或其他中间件中清除会话和 Cookie public function handle($request, Closure $next, ...$guards) { // 禁用所有会话并清除所有 Cookie $request->session()->flush(); $request->session()->regenerate(); $response = $next($request); $response->headers->remove('Set-Cookie'); return $response; }
Kod ini akan mengosongkan semua data sesi dan memadam semua kuki sesi pada akhir permintaan. Dengan cara ini, walaupun seseorang secara tidak sengaja cuba mengakses aplikasi anda, dia tidak akan dapat memulihkan status log masuknya melalui mana-mana sesi.
Ringkasan
Mematikan log masuk pengguna mungkin bukan amalan biasa dalam pembangunan aplikasi Laravel, tetapi ia berfungsi dalam sesetengah kes. Untuk mematikan log masuk pengguna, lumpuhkan penghalaan berkaitan pengesahan, perisian tengah dan kuki sesi dalam aplikasi anda, kemudian log keluar semua pengguna yang sedang log masuk. Dengan cara ini, walaupun seseorang cuba mengakses aplikasi anda menggunakan sesi yang sah, dia tidak akan dapat memulihkan status log masuknya melalui mana-mana sesi.
Atas ialah kandungan terperinci Bagaimana untuk mematikan log masuk pengguna dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!