Laravel 5.1:如何仅验证活动用户

时间:2015-12-17 12:09:37

标签: php laravel authentication laravel-5 laravel-5.1

我想在AuthController中添加另一个条件,但我不知道该怎么做。

在我的Users表中,我有一个Active字段。如果UserActive == 0,我不想让他/她登录系统。我不知道在Laravel 5.1 AuthController中添加该条件的位置。

请帮助我。 非常感谢你们!

3 个答案:

答案 0 :(得分:1)

您可以覆盖postLoginAuthenticatesUsers特征的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;
}