自定义身份验证的护照查询时间

时间:2018-12-12 09:46:55

标签: laravel laravel-5 laravel-passport

对于每个请求,我发现都会触发4个查询以验证用户和令牌。其中之一是根据用户ID获取用户(从用户中选择*)。该查询由Passport / Laravel触发,但是我想要修改此查询以添加一个状态字段检查,以检查在令牌有效期内是否有任何用户无效。如果我们仅使用id进行检查,则是否有任何用户处于非活动状态(通过更改状态,我们也将无法停止该用户,因为删除该用户的令牌对我来说不是一个好方法)。

Passport Laravel对每个请求触发的查询:

select * from oauth_access_tokens where id = ? 
select * from user where id = ? limit 1 ["2"] 
select * from oauth_access_tokens where id = ? 
select * from oauth_clients where id = ?

因此,有人可以告诉我如何在令牌验证时更改护照中的“ select * from user where id”查询。

2 个答案:

答案 0 :(得分:2)

您可以在User模型(或您要通过护照进行身份验证的任何模型)上添加此方法

    ...
    public function findForPassport($username)
    {
        return $user = (new self)->where('email', $username)->where('is_active', 1)->first();
    }
    ...

当然,只要它返回is_active合约,您就可以通过正在使用的任何列(和/或与此相关的任何查询约束)来修改Illuminate\Contracts\Auth\Authenticatable

答案 1 :(得分:1)

我不会尝试修改护照的默认行为,因为我不知道它还会对现在和将来的升级产生什么影响。

您最好的选择是参加护照事件,并将您的业务逻辑应用于事件触发时所调用的侦听器