对于每个请求,我发现都会触发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”查询。
答案 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)
我不会尝试修改护照的默认行为,因为我不知道它还会对现在和将来的升级产生什么影响。
您最好的选择是参加护照事件,并将您的业务逻辑应用于事件触发时所调用的侦听器