代码之家  ›  专栏  ›  技术社区  ›  Trishant Pahwa

阻止JWT令牌AdonisJS

  •  0
  • Trishant Pahwa  · 技术社区  · 4 年前

    因为JWT是无状态的,所以只能通过从客户端删除它来注销它。但是,我需要一个功能,在没有客户端交互的情况下,我试图从服务器端注销用户。所以,我读了一些博客发现,实现这一点的最好方法是将使用过的JWT令牌黑名单。

    但是,现在的问题是,如果我试图黑名单,AdonisJS只是保存令牌,我怎么能黑名单呢?我的意思是,如何比较包含完整JWT的授权头和其中编码的令牌?

    如果有其他可能的话,请建议。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Amir Hosein Salimi    4 年前

    太长,读不下去了
    你可以直接跑 await auth.logout() . 令牌将自动删除。

    长话短说:
    你可以定义一条路线,例如。 /user/logout
    Route.get('/user/logout, 'UsersController.logout')

    然后打开控制器并实现注销方法。把这个放进去:
    return await auth.logout()

    但是,您可以手动执行此操作:
    await Database.from('api_tokens').where('id', tokenId).delete()

    哪里 tokenId 是用户的令牌。