Laravel Passport刷新令牌无效-令牌未链接到客户端
我在Laravel 5.5上使用Passport,尝试刷新访问令牌时收到错误-仅在生产服务器上-本地开发环境工作正常 这是返回的错误:Laravel Passport刷新令牌无效-令牌未链接到客户端,laravel,oauth,laravel-passport,Laravel,Oauth,Laravel Passport,我在Laravel 5.5上使用Passport,尝试刷新访问令牌时收到错误-仅在生产服务器上-本地开发环境工作正常 这是返回的错误: { "error": "invalid_request", "message": "The refresh token is invalid.", "hint": "Token is not linked to client" } 我已经验证了令牌和客户端是否存在于数据库中、是否已过期、是否已撤销、是否正确存储等 因为系统是一个多租户系统(每个租户都有自己的数
{
"error": "invalid_request",
"message": "The refresh token is invalid.",
"hint": "Token is not linked to client"
}
我已经验证了令牌和客户端是否存在于数据库中、是否已过期、是否已撤销、是否正确存储等
因为系统是一个多租户系统(每个租户都有自己的数据库),所以我没有使用命令创建passport客户端
php artisan passport:client
相反,我复制了每个租户的passportoauth_clients
表和内容,以便每个租户使用相同的客户端凭据,例如从前端登录、从应用程序登录(但使用不同的端点)
我不明白为什么它在我本地的机器上工作正常,但在生产上却不正常
除了在oauth_clients
表中创建一行之外,有人知道php artisan passport:client
到底做了什么吗
我认为可能需要的不仅仅是复制oauth\u客户机
表内容
任何建议,谢谢!谢谢在深入了解供应商代码后,我通过修改 供应商/league/oauth2服务器/src/Grant/RefreshTokenGrant.php 函数ValidateOrdRefreshToken 改变
if ($refreshTokenData['client_id'] !== $clientId) {
$this->getEmitter()->emit(new RequestEvent(RequestEvent::REFRESH_TOKEN_CLIENT_FAILED, $request));
throw OAuthServerException::invalidRefreshToken('Token is not linked to client');
}
到
即使$clientId匹配,函数也会被传递一个字符串(根据需要),但$refreshTokenData['client_id']是一个整数
fml.分享您如何创建刷新的令牌,以及您将其存储在本地和重新发送的位置?
if ($refreshTokenData['client_id'] != $clientId) {
$this->getEmitter()->emit(new RequestEvent(RequestEvent::REFRESH_TOKEN_CLIENT_FAILED, $request));
throw OAuthServerException::invalidRefreshToken('Token is not linked to client');
}