AdonisJs / Laravel 中的 JWT 令牌验证过程
Posted
技术标签:
【中文标题】AdonisJs / Laravel 中的 JWT 令牌验证过程【英文标题】:JWT token validation process in AdonisJs / Laravel 【发布时间】:2020-08-20 22:52:29 【问题描述】:我使用的是AdonisJs
,它与Laravel
非常相似,除了语法。我生成了JWT
令牌,用户模型提供uid
作为电子邮件和password
作为密码,如下所示;
jwt:
serializer: 'lucid',
model: 'App/Models/User',
scheme: 'jwt',
uid: 'email',
password: 'password',
options:
secret: Env.get('APP_KEY'),
expiresIn: 1000000000,
我能够通过使用邮递员的 API 调用验证该令牌来获取用户。
现在我已经手动更改了数据库中的email
id,之前生成令牌时是uid
,我仍然能够验证以前的令牌并通过邮递员 api 调用获取用户详细信息。
我的问题是,当调用 await.auth.getUser()
时,Adonis auth
对象应该验证该令牌。但不是无效,而是返回带有更新电子邮件的数据,该电子邮件是从数据库手动更改的。这个过程是如何工作的?我想这在 Laravel 中也是一样的。
【问题讨论】:
这和 laravel 有什么关系? @ÖzgürCanKaragözLravel
以类似的方式处理auth
,Larvel 的概念将有助于我理解
【参考方案1】:
回复forum.adonisjs.com
Adonis仅使用用户 ID 进行身份验证。
基本阿多尼斯令牌: full token
uid = 用户 ID
您可以将User
对象编码成带有jwtPayload
的token,然后手动检查User
数据:
在 Payload 中添加用户实例
创建令牌时启用jwtPayload:
const user = await User.find(1)
// generate(user, [jwtPayload], [jwtOptions])
const token = await auth.generate(user, true)
令牌示例:
full token
获取有效载荷数据
const data = auth.jwtPayload; // Get full Playload
const user = auth.jwtPayload.data; // Get user
输出(全负载):
"uid": 2,
"data":
"email": "test@crbast.ch",
"role": "admin",
"created_at": "2020-05-06 11:26:36",
"updated_at": "2020-05-06 11:26:36",
"id": 2
,
"iat": 1588757196
现在您可以验证电子邮件了
【讨论】:
以上是关于AdonisJs / Laravel 中的 JWT 令牌验证过程的主要内容,如果未能解决你的问题,请参考以下文章
adonisjs 类似php laravel 的mvc 框架
adonisjs 类似php laravel 的mvc 框架
javascript 用于AdonisJS的Laravel Mix + TailwindCSS + PurgeCSS资产管道配置