阻止JWT令牌AdonisJS

时间:2020-11-12 06:29:35

标签: jwt adonis.js

在我的应用程序中,我正在使用JWT在Adonis中创建的后端上进行身份验证。但是,我面临一个问题。

由于JWT是无状态的,因此只能通过从客户端将其删除来注销。但是,我需要一种功能,在这种功能下,如果没有客户端交互,我将从服务器端注销用户。因此,我阅读了一些博客并发现,实现这一目标的最佳方法是将使用过的JWT令牌列入黑名单。

但是,现在的问题是,如果我尝试将黑名单列入名单,那么AdonisJS只会保存令牌,如何将其列入黑名单?我的意思是如何比较包含完整JWT的Authorization标头和其中编码的令牌?

基本上我如何从AdonisJS保存的记录的令牌列中生成JWT?

如果可以采取其他任何方法,请提出建议。

1 个答案:

答案 0 :(得分:1)

TL; DR
您可以简单地运行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是用户的令牌。