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