在阅读了许多关于JWT和会话的文章后,我很确定我不应该将JWT用于会话。
但是,是否有机会在同一应用程序中使用 JWT 和会话?如果是,如何以及如果不是,还有什么替代方案?
我目前正在nodeJS中开发一个简单的身份验证系统,该系统可以在需要时登录和注销用户。我正在使用JWT来存储有关用户的相关信息,这些信息以后可用于访问某些端点。
因此,在挖掘之后,我也开始了解会话,因此我现在对如何使用 JWT 和会话来完成我的任务感到困惑。我对所有这些东西都很陌生,所以反馈和回应都值得赞赏
编辑:经过数小时的挖掘,我对何时使用JWT以及何时使用会话感到更加困惑。任何帮助,不胜感激。
编辑部分2:在收到有关问题关闭原因的私人反馈后,我对问题进行了一些更改。
在我看来,JWT 的实现应该经常与非 cookie 会话堆叠在一起,除非应用程序非常简单。
一些随机场景:
假设以下内容:Web 应用程序使用 JWT 进行身份验证,并且应用程序允许管理员将任何客户端标记为非活动客户端(已阻止(,因此应阻止客户端登录。
现在问题在于使用 JWT 进行身份验证;我们不知道这个特定的客户端是否被阻止。
为了解决这个问题,我看到一些开发人员在每个请求上查询数据库。其他开发人员撤销了 JWT 并发布了一个标记为非活动的新 JWT,但如果有太多动态标志怎么办?同样如此狠狠地打击DB并不明智。
结论 JWT + 会话:
一个简单的解决方案是为每个有效的 JWT 授予一个内存中会话,并将用户必要的数据存储在其中,对用户数据的任何更改都应反映在用户存储的会话中。所有传入的请求都将得到 JWT 验证以及会话验证。