【发布时间】:2019-06-18 04:34:02
【问题描述】:
在创建请求的令牌之前,我需要验证 users 表中的额外字段,但我找不到使用 Passport 的简单方法。
我找到了类似的 workarunds,它使用 $user->createToken() 返回一个令牌,但我找不到涵盖所有默认 /oauth/token 选项的人,例如 refresh_token
我还看到Passport 有一些简单的方法来自定义用户名列和密码验证,但我认为这不能满足我的需要。
更新
我不确定这是否是最好的解决方案,但在 Laravel 5.8 中,passport 包有这个 validateForPassportPasswordGrant() 函数,它允许您在完成身份验证过程之前添加一些额外的条件。
class User extends Authenticatable
{
public function validateForPassportPasswordGrant($password)
{
if ($this->active != true) {
throw OAuthServerException::accessDenied('The account is not active');
}
return Hash::check($password, $this->password);
}
}
【问题讨论】:
-
您是否设法验证了用户的自定义字段?我也有同样的问题,无法验证我在 users 表上的新
active列是真还是假。 -
是的,在这种情况下,
active是users表中的一列。你用的是护照吧? -
是的,伙计,它与您的代码完美配合。现在我正在尝试管理响应,我不想收到 401。谢谢
-
嗯,你可以简单地设置一个
return response('', 400);(或无论http代码),但我通常会尽量避免直接从models返回一些东西
标签: laravel oauth-2.0 laravel-passport