Laravel允许对存储在Cookie中的remember_token
的用户进行身份验证。
在我的user
表格中,我有一个active
列boolean (1, 0)
。
例如,如果用户被解雇,则需要禁用其登录功能;所以你将active
值更改为0。
但是你要用他的饼干做什么?
通知!我用非常原始的方式写了这篇文章!问题是如何妥善处理这种情况。
答案 0 :(得分:1)
由于您无法删除记住cookie,因此您需要在应用程序中执行检查,以确保所有登录的用户都具有活动状态。
你可以这样做的一种方法是为 auth.login 事件实现一个监听器并检查那里的状态。
class CheckUserStatusHandler {
public function handle($user) {
if (!$user->active) Auth::logout($user);
}
}
注销方法将注销用户和删除记住令牌。
然后在 EventServiceProvider :
中注册听众protected $listen = [
'auth.login' => [
CheckUserStatusHandler::class
]
];
答案 1 :(得分:0)
看起来你应该能够在AuthController中覆盖AuthenticatesUsers :: getCredentials()并添加状态以防止它们无论cookie如何都登录?
/**
* Get the needed authorization credentials from the request, and force the
* user to be activated in order to be authenticated with the application.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
protected function getCredentials(Request $request)
{
$credentials = $request->only($this->loginUsername(), 'password');
return array_merge($credentials, [
'status' => 1,
]);
}