我正在研究Laravel 5.4项目。我喜欢Laravel提供的登录,无论是登录还是注册都可以。
我将以下代码添加到Auth / LoginController.php。它只允许激活的用户(status = 1)成功登录,但不允许挂起的用户或被阻止的用户(状态= 0或其他)。
protected function credentials(\Illuminate\Http\Request $request)
{
return ['email' => $request->{$this->username()}, 'password' => $request->password, 'status' => 1];
}
无论如何,为了保护垃圾邮件,我想只允许激活的用户登录。对于那些帐户未激活的人,我想在登录表单上显示待处理的消息。另外,我想对被阻止的用户做同样的事情。
你能告诉我如何实现这个目标吗?
答案 0 :(得分:0)
这样,Laravel只会根据您指定的凭据选择用户,如果您想检查用户的状态以及要显示的视图可以覆盖登录控制器的authenticated()
方法。它可以访问已登录的用户,因此请注意您必须注销状态无效。
protected function authenticated(Request $request, $user)
{
if ( $user->status == 0 ) {
auth()->logout();
return back()->withErrors(['email' => 'You are blocked or not activated.']);
}
return redirect()->intended($this->redirectPath());
}