阻止 JWT 令牌 AdonisJS
Blocking JWT tokens AdonisJS
在我的应用程序中,我在 Adonis 创建的后端使用 JWT 进行身份验证。但是,我遇到了一个问题。
由于 JWT 是无状态的,因此只能通过从 client-side 中删除它来注销。但是,我需要一个功能,在没有客户端交互的情况下,我试图从服务器端注销用户。因此,我阅读了一些博客并发现,实现这一目标的最佳方法是将使用过的 JWT 令牌列入黑名单。
但是,现在的问题是,如果我尝试将其列入黑名单,AdonisJS 只会保存令牌,我该如何将其列入黑名单?我的意思是如何比较包含完整 JWT 的授权 header 和其中编码的令牌?
基本上我如何从 AdonisJS 保存的记录的令牌列生成 JWT?
如果有其他方法请建议。
TL;DR
您可以简单地 运行 await auth.logout()
。令牌将被自动删除。
长答案:
您可以定义一条路线,例如/user/logout
Route.get('/user/logout, 'UsersController.logout')
然后打开controller,实现logout方法。把这个放在那里:
return await auth.logout()
此1LoC 将删除相应用户的当前令牌。
但是,您可以手动执行此操作:
await Database.from('api_tokens').where('id', tokenId).delete()
其中 tokenId
是用户的令牌。
在我的应用程序中,我在 Adonis 创建的后端使用 JWT 进行身份验证。但是,我遇到了一个问题。
由于 JWT 是无状态的,因此只能通过从 client-side 中删除它来注销。但是,我需要一个功能,在没有客户端交互的情况下,我试图从服务器端注销用户。因此,我阅读了一些博客并发现,实现这一目标的最佳方法是将使用过的 JWT 令牌列入黑名单。
但是,现在的问题是,如果我尝试将其列入黑名单,AdonisJS 只会保存令牌,我该如何将其列入黑名单?我的意思是如何比较包含完整 JWT 的授权 header 和其中编码的令牌?
基本上我如何从 AdonisJS 保存的记录的令牌列生成 JWT?
如果有其他方法请建议。
TL;DR
您可以简单地 运行 await auth.logout()
。令牌将被自动删除。
长答案:
您可以定义一条路线,例如/user/logout
Route.get('/user/logout, 'UsersController.logout')
然后打开controller,实现logout方法。把这个放在那里:
return await auth.logout()
此1LoC 将删除相应用户的当前令牌。
但是,您可以手动执行此操作:
await Database.from('api_tokens').where('id', tokenId).delete()
其中 tokenId
是用户的令牌。