课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在上文中给大家简单介绍了JWT技术应用的优势都有哪些等内容,而本文我们就通过案例分析再来了解一下,JWT技术应用实施方案包含哪些。希望通过对本文的阅读,大家对于编程安全有更多的了解。
1、将JWT存入内存数据库
将JWT存入DB中,Redis内存数据库在这里是不错的选择。如果需要让某个JWT失效就直接从Redis中删除这个JWT即可。但是,这样会导致每次使用JWT发送请求都要先从DB中查询JWT是否存在的步骤,而且违背了JWT的无状态原则。
2、黑名单机制
和上面的方式类似,使用内存数据库比如Redis维护一个黑名单,如果想让某个JWT失效的话就直接将这个JWT加入到黑名单即可。然后,每次使用JWT进行请求的话都会先判断这个JWT是否存在于黑名单中。
前两种方案的核心在于将有效的JWT存储起来或者将指定的JWT拉入黑名单。
虽然这两种方案都违背了JWT的无状态原则,但是一般实际项目中我们通常还是会使用这两种方案。
3、修改密钥(Secret):
我们为每个用户都创建一个专属密钥,如果我们想让某个JWT失效,我们直接修改对应用户的密钥即可。但是,这样相比于前两种引入内存数据库带来了危害更大:
如果服务是分布式的,则每次发出新的JWT时都必须在多台机器同步密钥。为此,你需要将密钥存储在数据库或其他外部服务中,这样和Session认证就没太大区别了。
如果用户同时在两个浏览器打开系统,或者在手机端也打开了系统,如果它从一个地方将账号退出,那么其他地方都要重新进行登录,这是不可取的。
4、保持令牌的有效期限短并经常轮换
很简单的一种方式。但是,会导致用户登录状态不会被持久记录,而且需要用户经常登录。
另外,对于修改密码后JWT还有效问题的解决还是比较容易的。说一种我觉得比较好的方式:使用用户的密码的哈希值对JWT进行签名。因此,如果密码更改,则任何先前的令牌将自动无法验证。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。