Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Auth系统的Node JS中同时使用JWT和会话_Node.js_Api_Security_Session_Jwt - Fatal编程技术网

Node.js 在Auth系统的Node JS中同时使用JWT和会话

Node.js 在Auth系统的Node JS中同时使用JWT和会话,node.js,api,security,session,jwt,Node.js,Api,Security,Session,Jwt,在阅读了许多关于JWT和会话的文章之后,我非常确定我不应该在会话中使用JWT 但是,是否有机会在同一个应用程序中使用JWT和会话?如果是,如何选择,如果不是,有哪些替代方案 我目前正在nodeJS中开发一个简单的auth系统,它可以在用户需要时登录和注销。我使用JWT来存储用户的相关信息,这些信息可用于访问某些端点 因此,在挖掘之后,我也开始了解会话,因此我现在对如何使用JWT和会话来完成任务感到困惑。我对所有这些东西都很陌生,所以我非常感谢您的反馈和回复 编辑:经过数小时的挖掘,我对何时使用J

在阅读了许多关于JWT和会话的文章之后,我非常确定我不应该在会话中使用JWT

但是,是否有机会在同一个应用程序中使用JWT和会话?如果是,如何选择,如果不是,有哪些替代方案

我目前正在nodeJS中开发一个简单的auth系统,它可以在用户需要时登录和注销。我使用JWT来存储用户的相关信息,这些信息可用于访问某些端点

因此,在挖掘之后,我也开始了解会话,因此我现在对如何使用JWT和会话来完成任务感到困惑。我对所有这些东西都很陌生,所以我非常感谢您的反馈和回复

编辑:经过数小时的挖掘,我对何时使用JWT和何时使用会话感到更加困惑。感谢您的帮助


编辑第2部分:在收到关于问题为何关闭的私人反馈后,我对问题进行了一些更改。

在我看来,JWT的实现通常应该与非cookie会话堆叠在一起,除非应用程序非常简单

一些随机场景:

假设如下:;web应用程序正在使用JWT进行身份验证,该应用程序允许管理员将任何客户端标记为非活动客户端(已阻止),因此应阻止客户端登录

现在的问题在于与JWT的认证;我们不知道这个特定的客户端是否被阻止

为了解决这个问题,我看到一些开发人员在每次请求时都会查询数据库。其他开发人员撤销JWT并发布一个标记为非活动的新JWT,但如果动态标记太多怎么办?。同样如此猛烈地打击DB也不是明智之举

结束JWT+会议:


一个简单的解决方案是为每个有效的JWT授予一个内存会话,并在其中存储用户所需的数据,用户数据的任何更改都应该反映在用户存储的会话中。所有传入的请求都将得到JWT验证和会话验证。

在我看来,JWT的实现通常应该与非cookie会话堆叠在一起,除非应用程序非常简单

一些随机场景:

假设如下:;web应用程序正在使用JWT进行身份验证,该应用程序允许管理员将任何客户端标记为非活动客户端(已阻止),因此应阻止客户端登录

现在的问题在于与JWT的认证;我们不知道这个特定的客户端是否被阻止

为了解决这个问题,我看到一些开发人员在每次请求时都会查询数据库。其他开发人员撤销JWT并发布一个标记为非活动的新JWT,但如果动态标记太多怎么办?。同样如此猛烈地打击DB也不是明智之举

结束JWT+会议:


一个简单的解决方案是为每个有效的JWT授予一个内存会话,并在其中存储用户所需的数据,用户数据的任何更改都应该反映在用户存储的会话中。所有传入请求都将得到JWT验证和会话验证。

我同意您的输入。另外,我不想打db调用,因为这可能会影响大规模部署中的性能。我的一个担忧是,即使会话关闭,jwt令牌仍然被授权并可以再次使用。这是正确的担忧还是我遗漏了什么?@hackerrr是的。但是考虑将会话和令牌配置为具有相同的TTL/期满,都将在同一时刻到期。正确,但是如果令牌和会话在用户处于活动状态时过期,则S/He必须再次登录,并且如果两者都足够长,则攻击者可以使用该信息来模拟user@Hackeerrrr正确的。然而,在这种情况下,刷新令牌很方便;用新的替换JWT并刷新会话TTL。我同意你的输入,我考虑使用它们,看看它们是如何工作的。谢谢你的回答。我同意你的意见。另外,我不想打db调用,因为这可能会影响大规模部署中的性能。我的一个担忧是,即使会话关闭,jwt令牌仍然被授权并可以再次使用。这是正确的担忧还是我遗漏了什么?@hackerrr是的。但是考虑将会话和令牌配置为具有相同的TTL/期满,都将在同一时刻到期。正确,但是如果令牌和会话在用户处于活动状态时过期,则S/He必须再次登录,并且如果两者都足够长,则攻击者可以使用该信息来模拟user@Hackeerrrr正确的。然而,在这种情况下,刷新令牌很方便;用新的替换JWT并刷新会话TTL。我同意你的输入,我考虑使用它们,看看它们是如何工作的。谢谢你的回复,各位同事。该问题已结束,在进行编辑后,我希望它重新打开。如果你能再考虑一下,好了。该问题已结束,在进行编辑后,我希望它重新打开。如果你能再考虑一下,那就太好了。