最近,他们向我澄清了如何防止非活动用户使用他们的凭据进行访问。在login()
控制器方法LoginController
中,我被建议重写方法credentials()
,如下所示:
protected function credentials(Request $request)
{
$credenciales = $request->only($this->username(), 'password');
//añadimos el valor de activo a S, para que sea correcto
$credenciales = array_add($credenciales, 'activo', 'S');
return $credenciales ;
}
它可以阻止用户,但它不足以满足我的意图。我尝试如果用户不活动,它会将他重定向到一个页面,通知他他的情况,并且不允许他访问。此外,如果用户在已登录时被管理员停用,则他们单击的任何链接或从那一刻起他们所做的任何事情都应将其注销并将其重定向到通知他们已被停用的页面。
从我读过的内容来看,我认为这可以通过中间件来完成,但坦率地说,我不知道从哪里开始。
最好的方法是使用中间件,它允许您在 PHP 请求到达控制器之前对其进行评估。对于这种情况,您可以创建一个新的中间件或通过修改 app/Http/Middleware/Authenticate.php
如果您创建一个新的,则必须将其应用于使用 auth 中间件的相同路由。
在中间件中你会有这样的东西:
您可以通过其他方式进行身份验证。