Kap*_*phy 9 redis node.js access-token jwt express-jwt
我想在我的下一个项目中实现 JWT。我只想知道是否有任何最佳方法可以实现从 JWT 中的所有设备注销。由于 JWT 是无状态机制,我们是否必须涉及 redis/db?
我发现以下是使用 jwt 处理少数事情的最佳方法。
由于 jwt 是无状态机制,我遇到了以下问题。
如何实现注销?当有人尝试注销时,由于它是无状态的,因此会出现使令牌无效的问题。
解决方案: 使用 redis 作为处理所有令牌的内存数据库,每次用户登录时保存令牌(与令牌具有相同的 ttl),与每个请求以及令牌验证进行交叉检查。当有人想注销时,从redis中连同客户端一起删除令牌。由于我们在redis中交叉检查,当用户注销并尝试使用相同的令牌访问时,系统不会在redis中找到令牌,因此处理它并抛出未 认证的错误.
用户更改密码时如何使同一用户的所有令牌无效?
如何实现从所有设备注销功能?
解决方案:当我们在 redis 中存储令牌时,我们必须搜索与给定用户相关的所有令牌并将其从 redis 中删除或在用户登录时也将令牌存储在数据库中,找出与用户相关的所有令牌,获取令牌 ID 和从redis中删除它们。存储在 db 中更好,因为 dbs 更擅长查找操作。
| 归档时间: |
|
| 查看次数: |
4180 次 |
| 最近记录: |