我想在AuthController
中添加另一个条件,但我不知道该怎么做。
在我的Users
表中,我有一个Active
字段。如果User
有Active == 0
,我不想让他/她登录系统。我不知道在Laravel 5.1 AuthController
中添加该条件的位置。
请帮助我。 非常感谢你们!
答案 0 :(得分:1)
您可以覆盖postLogin
中AuthenticatesUsers
特征的AuthController
方法:
public function postLogin(Request $request)
{
/* PLACE HERE VALIDATION CODE... */
//attempt login but not log in the user
if ( ! Auth::attempt($credentials, false, false) )
{
//wrong credentials: redirect to login
}
//CREDENTIALS OK
//get user model from last attempt
$user = Auth::getLastAttempted();
//if user is not active...
if (! $user->active)
{
//do whathever you want: for example redirect to login
}
//USER IS ACTIVE
//login the user
Auth::login($user, $request->has('remember'));
//redirect where you need
}
检查原始:vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers::postLogin
方法,看看是否需要覆盖方法中的其他说明(例如输入验证)
答案 1 :(得分:0)
您可以在Auth控制器中添加自定义postLogin()函数,该函数会使用此条件覆盖默认的postLogin函数
Auth::attempt(array('email' => $email, 'password' => $password, 'active' => 1))
这样您只会对活跃用户进行身份验证
干杯!!
答案 2 :(得分:0)
不要覆盖整个postLogin函数,而是将其添加到 AuthController
protected function getCredentials(Request $request)
{
$crendentials=$request->only($this->loginUsername(), 'password');
$crendentials['active']=1;
return $crendentials;
}