如果我以完全无状态的方式使用基于令牌的身份验证(如JWT)(即在令牌中包含用户ID等内容),那么我是否正确,那么根本不需要会话?
我刚读过这篇文章(Stop using JWT for sessions),不推荐使用JWT替换会话。
答案 0 :(得分:2)
答案(一如既往):这取决于!
以前的陈述可能是软件开发的唯一规则,其他一切都是指导方针。是的,我夸大了,但我想传达的是你需要把那些文章拿出来。
对于您的问题,更具体的答案是,是的,如果您在JWT中包含您需要的所有内容,则不需要服务器端会话,但如果您在cookie中包含所需的所有内容,情况也是如此。 / p>
在你的位置,我会阅读更多关于该主题的文章,然后考虑手头的具体情况,并决定最适合它的方法。我可以推荐一个有趣的补充阅读,以下博客文章:Cookies vs Tokens: The Definitive Guide
TL; DR 基于令牌的身份验证比以往更加重要。我们检查了cookie和基于令牌的身份验证之间的差异和相似之处,使用令牌的优势,以及解决开发人员关于基于令牌的身份验证的常见问题和疑虑。
从摘要中可以看出,它似乎支持基于令牌的身份验证,但这很好,因为它可以让您获得关于该主题的另一个视角。
就个人情况而言,根据具体情况,使用其中任何一种方法都没有问题。
如果我的系统由在单个域中提供的单个甚至多个Web应用程序组成,则使用会话标识符与存储在服务器上的关联会话数据的更传统的实现方式是该死的好选择,让我们明白为什么:
但是,如果我有一个多个应用系统分布在不同的域和/或平台(网络,原生移动等),我会给基于令牌的方法提供更多相关性...为什么你问一下,让我们看看: