我有一个问题要问Laravel文档中的Authenticating A User With Conditions部分。
我应该在哪个控制器和方法中插入此条件,以使其在整个应用程序中正常工作。我不太明白。
它是app/Http/Controllers/Auth/LoginController
的构造函数吗?
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1]))
{
// The user is active, not suspended, and exists.
}
谢谢
答案 0 :(得分:1)
这取决于您使用的版本。您已链接到5.0文档,所以我不确定您是否在实际使用它。
在最新版本中,您可以覆盖整个LoginController :: login方法,也可以仅向下钻取LoginController :: attemptLogin方法。两者实际上都是在AuthenticateUsers特性中定义的。
我倾向于以不同的方式来处理。如果用户处于非活动状态或暂停状态,我希望向他们显示的消息不同于普通的失败登录消息。我希望使用中间件来检查其状态,并通过有关其帐户的消息来重定向它们。
class CheckActiveMiddleware
{
public function handle($request, Closure $next)
{
// Check that the user is still active
if($request->user()->active)
{
return $next($request);
}
return redirect('/login')->withErrors('Your account has been deactivated.');
}
}
这还允许您停用仍在登录的用户。由于使用您的方法,选择“记住我”的登录用户仍可以使用该应用程序,直到他们注销为止,因为您的支票仅在登录。