jwt - 阻止 JWT 令牌 AdonisJS
问题描述
在我的应用程序中,我使用 JWT 在 Adonis 创建的后端进行身份验证。但是,我面临一个问题。
由于 JWT 是无状态的,它只能通过从客户端删除它来注销。但是,我需要一个功能,在没有客户端交互的情况下,我试图从服务器端注销用户。因此,我阅读了一些博客并发现,实现这一目标的最佳方法是将使用的 JWT 令牌列入黑名单。
但是,现在的问题是,如果我想将其列入黑名单,AdonisJS 只是保存令牌,我该如何将其列入黑名单?我的意思是如何比较包含完整 JWT 的 Authorization 标头和其中编码的令牌?
基本上如何从 AdonisJS 保存的记录的令牌列生成 JWT?
如果有其他方法可以请建议。
解决方案
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
用户的令牌在哪里。
推荐阅读
- vba - 删除一张图片
- reactjs - 如何在映射中返回 React 组件
- android - 精确定位所有屏幕尺寸和定义的视图
- reactjs - React UI 框架 VS 带有 styled-components 库的纯 CSS
- java - 通过多个不同的 xpath 查找元素
- javascript - Javascript:在模板文字中查找所有未转义的美元符号 ($)
- android - AdMob 仅展示测试广告
- java - 读取带空行的 int 文件并保存到数组 - JAVA
- python - Python 中的 Runtime.MarshalError
- amazon-web-services - 如何最好地管理 AWS 中的 Cloudfront/Nginx 502 Bad Gateway 错误