2017-08-04 85 views
0

我正在致力于Laravel 5.4项目。我喜欢Laravel提供的登录,并且它可以在登录或注册时正常工作。Laravel 5.4在登录表单中显示激活待处理消息

我将下面的代码添加到Auth/LoginController.php。它只允许激活的用户(状态= 1)成功登录,但不允许用户或被阻止的用户(状态= 0或其他)。

protected function credentials(\Illuminate\Http\Request $request) 
{ 
    return ['email' => $request->{$this->username()}, 'password' => $request->password, 'status' => 1]; 
} 

无论如何,要保护垃圾邮件,我想只允许激活的用户登录。对于那些帐户未激活的用户,我想在登录表单上显示待处理消息。另外,我想为阻止的用户做同样的事情。

您能否告诉我如何实现这个目标?

回答

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()); 
} 
+0

谢谢。我应该在登录控制器中正确放置这些代码。添加后,它给我错误参数1传递给应用程序\ Http \ Controllers \ Auth \ LoginController :: authenticated()必须是App \ Http \ Controllers \ Auth \ Request的实例,给出的Illuminate \ Http \ Request实例。 ... – Udom

+0

@Udom你必须将类导入到你的控制器。在命名空间声明之后,在文件顶部添加'使用Illuminate \ Http \ Request;'。 – TheFallen

+0

这很好用!无论如何,你能告诉我如何发送电子邮件尚未注册的消息吗? – Udom