我现在有一种方法可以用来注销任何 sessons/guards,问题是我必须定义每个方法,因为只有两个,所以现在很好。
我想知道是否有办法使这更简单(除了销毁所有会话数据)。
Route::get('/logout', function () {
Auth::logout();
Auth::guard('business_user')->logout();
return redirect()->route('home');
})->name('user.logout');
在网络调用之间重置身份验证管理器时,我在我的测试套件中执行了类似的操作。您可以从配置文件中获取已定义的守卫列表,然后遍历这些守卫并调用logout()
支持该logout()
方法的守卫。代码中的注释。
Route::get('/logout', function () {
// Get a list of all of the defined guards.
$guards = array_keys(config('auth.guards'));
// Loop through each guard and logout.
foreach ($guards as $guard) {
$guard = app('auth')->guard($guard);
// Not all guard types have a logout method. The SessionGuard (web) does,
// the TokenGuard (api) does not. Only call the method if it exists
// on the guard.
if (method_exists($guard, 'logout')) {
$guard->logout();
}
}
return redirect()->route('home');
})->name('user.logout');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句