如何在Laravel中使用自定义条件进行身份验证?

时间:2016-03-14 15:14:51

标签: php laravel authentication laravel-5

在Laravel文档中,有简单的身份验证条件

Auth::attempt(array('email' => $email, 'password' => $password, 'active' => 1))

在我的应用中,用户可以拥有少数状态之一。我想验证其中一个:status!='99'。

有没有办法在此请求中实现此功能,或者在Auth尝试被触发之前需要一些额外的逻辑?

1 个答案:

答案 0 :(得分:0)

使用!=方法检查Auth::Attempt条件是不可能的,除非您覆盖EloquentServiceProvider::retrieveByCredentials方法。

您可以在登录过程中检查User状态,并仅在状态与99不同时进行身份验证。

在您的支票登录方式中:

//check credentials 
if ( ! Auth::validate([ 'email' => $email, 'password' => $password ] ) )
    //credentials are not valid -> redirect

//if credentials are valid, get the user that made last attempt
$user = Auth:getLastAttemped();

//check the status   
if( $user->status != '99' )
{
    //status ok -> log in the user
    Auth::login( $user );

    //redirect wherever you want
}
else
{
    //status is wrong -> redirect to login     
}