在我的应用程序中,我使用JWT对在Adonis中创建的后端进行身份验证。但是,我正面临一个问题。
由于JWT是无状态的,所以只能通过从客户端删除JWT来注销它。但是,我需要一个功能,在没有客户端交互的情况下,我试图从服务器端注销用户。所以,我读了几个博客,发现,实现这一点的最好方法是黑名单上使用的JWT令牌。
但是,现在的问题是,如果我尝试黑名单,AdonisJS只是保存令牌,我怎么能把它列入黑名单呢?我的意思是,如何比较包含完整JWT的授权头和其中编码的令牌?
基本上,如何从AdonisJS保存的记录的令牌列生成JWT?
如有其他可能,请提出建议。
发布于 2020-12-05 09:20:36
TL;博士
您可以简单地运行await auth.logout()。令牌将自动删除。
长答案:
您可以定义一条路由,例如/user/logout
Route.get('/user/logout, 'UsersController.logout')
然后打开控制器并实现注销方法。把这个放进去:
return await auth.logout()
这个1LoC将删除相应用户的当前令牌。但是,您可以手动完成此操作:
await Database.from('api_tokens').where('id', tokenId).delete()
其中tokenId是用户的令牌。
https://stackoverflow.com/questions/64798972
复制相似问题