我使用 Laravel 和 Laravel Passport 构建了一个 API。 一切都很好,但我现在想要实现的是使用 AdonisJs 构建一个新的 API - 用于网站的一些较小的东西,但两个框架的身份验证相同 - 我想这可以使用 JWT token 。
Laravel 和 Adonis 都配置为使用相同的私钥/公钥进行加密。 我面临的问题是,在通过 Laravel 登录后,我无法从 token 中读取用户,这是因为 JWT 对象不同。
Adonis 希望 payload 有一个 uid 属性,这在 Laravel passport made token 中不存在。
下面是passport创建的token:
{ aud: '9',
jti:
'ab9d81a20ed72e263f3f6bacef91962bfcb41b5523787fa301f56fa4978e5ae9ceb22dccbfb9fcef',
iat: 1575970326,
nbf: 1575970326,
exp: 1607592726,
sub: '332',
scopes: [],
}
而且,这是 Adonis 创建的代币
{ uid: 332, iat: 1575971236 }
有什么方法可以从 Laravel 设置 uid,或者从 Adonis 读取不同的字段?
谢谢!
最佳答案
也许你可以做这样的事情:
在创建 token 时在 token 中添加额外的字段
$customClaims = ['token_for' => `web` or 'mobile'];
$token = JWTAuth::claims($customClaims)->fromUser($user);
并检查任何中间件或任何你需要的地方
$payload = JWTAuth::parseToken()->getPayload();
$tokenFor = $payload->get('token_for');
现在在这里检查 $tokenFor web
或 mobile
并根据您的需要对 web
和 mobile
关于php - AdonisJs - 自定义 JWT uid 字段键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59264387/