【问题标题】:JWT token validation process in AdonisJs / LaravelAdonisJs / Laravel 中的 JWT 令牌验证过程
【发布时间】: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öz Lravel 以类似的方式处理auth,Larvel 的概念将有助于我理解

标签: laravel authentication token jwt-auth adonis.js


【解决方案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
}

现在您可以验证电子邮件了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 2017-08-18
    • 2019-06-23
    • 2020-09-03
    • 2018-08-30
    • 2017-07-27
    • 2019-10-20
    • 2016-01-17
    相关资源
    最近更新 更多