node.js - 在 Node JS 中同时使用 JWT 和 session 进行身份验证系统

标签 node.js api security session jwt

在阅读了很多有关 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/

相关文章:

security - 使用片段标识符在 URL 中保存私有(private)数据有多安全?

javascript - 如何在 Meteor 中只允许插入和更新某些文档字段?

php - 什么是多平台 WebApp 的良好 UserManagement 实践

node.js - Socket.IO 中的套接字引用

javascript - Node.js 服务器问题 - 在浏览器中查找文件时添加了 "/"

Javascript/将 json 转换为 csv

android - 使用 REST API 验证用户凭据?

javascript - Heatmaps.js 未捕获的 ReferenceError

node.js - 如何使用 Express JS 和 Jade 访问 instagram API?

node.js - 查找具有与两个(或多个)属性均匹配的子文档的文档