Session JSON web令牌vs会话-来自多个设备的身份验证如何详细工作?

Session JSON web令牌vs会话-来自多个设备的身份验证如何详细工作?,session,jwt,Session,Jwt,我已经读了很多关于json令牌和会话的文章,但仍然不了解一些事情 使用令牌的好处是跨多个设备进行身份验证 假设用户在网站上注册,服务器生成会话id,发送给客户端,客户端将其保存在Cookie或localstorage中(因此,每当用户想再次登录网站时,客户端会根据每个请求向服务器发送会话id,服务器查询数据库并检查其相同id是否发送响应)。然后,同一用户使用移动应用程序登录,因为会话id仅存储在计算机浏览器cookie/localstorage中,而不存储在移动设备或其他计算机上,如何从不同的

我已经读了很多关于json令牌和会话的文章,但仍然不了解一些事情

  • 使用令牌的好处是跨多个设备进行身份验证

    • 假设用户在网站上注册,服务器生成会话id,发送给客户端,客户端将其保存在Cookie或localstorage中(因此,每当用户想再次登录网站时,客户端会根据每个请求向服务器发送会话id,服务器查询数据库并检查其相同id是否发送响应)。然后,同一用户使用移动应用程序登录,因为会话id仅存储在计算机浏览器cookie/localstorage中,而不存储在移动设备或其他计算机上,如何从不同的计算机或移动设备登录?服务器将向用户登录的每个设备发送不同的会话id,然后在服务器上存储某种类型的数组,其中包含所有用户的会话id

    • 我还读到,使用令牌要简单得多,因为它们是无状态的。我只是不明白当涉及到多个设备时,这是如何相关的。 我了解到,对于每个请求服务器,如果其有效,则使用与颁发令牌时相同的签名进行检查。客户端需要在每次请求时将该令牌发送到服务器。那么,不是同一台不同的计算机从未将令牌存储在Cookie/localstorage中吗?那该如何工作呢?!服务器是否需要创建不同的令牌?如果是这样的话,我不明白其中的区别,为什么会话对多个设备的好处不如令牌

    • 此外,我还读到:“会话cookie只能在单个域或其子域上工作。如果它们试图转到第三方,浏览器往往会禁用它们……令牌不会出现这种情况。”。我不明白它是什么意思,它如何与多个设备相关,以及为什么cookie是相关的,因为json托克通常也存储在cookie以及会话id中


  • 抱歉,如果它可能太基本了,我只是读了太多关于它的内容,只是不了解基本知识。

    JWT和sessions之间有一些重要的区别

  • 会话存储在服务器或数据库的RAM中,用于存储用户所在的位置或正在执行的操作。例如,存储用户正在处理的当前页面
  • 但是JWT是无状态的。服务器不会将用户状态或其数据保存到RAM或数据库中。服务器为用户生成一个密钥,其中包括一些重要的身份验证数据(例如用户名、角色、上次访问日期),因此用户必须在每次请求中发送密钥,直到其密钥过期,并且必须请求另一个密钥。由于密钥仅包括用户身份验证数据,因此它可以在每个设备中使用(直到过期)
  • 正如您在移动应用程序中提到的,用户可以获得多个会话,因此JWT主要用于移动或单页应用程序。用户获得密钥,移动应用程序将处理用户活动的状态。

    希望这能有所帮助。

    JWT和sessions之间有一些重要的区别

  • 会话存储在服务器或数据库的RAM中,用于存储用户所在的位置或正在执行的操作。例如,存储用户正在处理的当前页面
  • 但是JWT是无状态的。服务器不会将用户状态或其数据保存到RAM或数据库中。服务器为用户生成一个密钥,其中包括一些重要的身份验证数据(例如用户名、角色、上次访问日期),因此用户必须在每次请求中发送密钥,直到其密钥过期,并且必须请求另一个密钥。由于密钥仅包括用户身份验证数据,因此它可以在每个设备中使用(直到过期)
  • 正如您在移动应用程序中提到的,用户可以获得多个会话,因此JWT主要用于移动或单页应用程序。用户获得密钥,移动应用程序将处理用户活动的状态。

    希望这能有所帮助。

    谢谢,我仍然想知道为什么jwt被认为对多个设备的会话有益?通过会话,用户可以获得多个会话。对于jwt,用户将为每个设备提供单独的jwt,不是吗?那么好处是什么呢?服务器将每个连接作为会话进行观察,因此,对于每个设备,服务器都会创建一个会话(存储在服务器上)。但是JWT是加密的用户数据(被认为是自包含的)。服务器不必保存用户数据,用户可以在每个设备中使用该令牌,因为它拥有服务器进行身份验证所需的一切。它以某种方式减少了服务器上的负载。但是使用JWT还是会话完全取决于应用程序。“用户可以在每台设备上使用该令牌,因为”-所以JWT只有一个令牌用户在所有设备上使用?这是怎么可能的?服务器创建jwt并将其发送,而不存储到计算机nr.1。然后用户登录到第2台计算机-服务器无法向第2台计算机发送相同的jwt,因为它不存储jwt,所以它不必创建新的jwt吗?另外,为什么使用会话,服务器会为每个设备创建新会话?既然服务器存储了会话id,为什么它不在用户成功登录后将相同的id发送到每个设备?谢谢,我仍然想知道为什么jwt被认为对会话中的多个设备有益?通过会话,用户可以获得多个会话。对于jwt,用户将为每个设备提供单独的jwt,不是吗?那么好处是什么呢?服务器将每个连接作为会话进行观察,因此,对于每个设备,服务器都会创建一个会话(存储在服务器上)。但是JWT是加密的用户数据(被认为是自包含的)。服务器不必保存用户数据,用户可以在每个设备中使用该令牌,因为它拥有服务器进行身份验证所需的一切。它以某种方式减少了服务器上的负载。但是使用JWT还是会话完全取决于应用程序。“用户可以在每台设备上使用该令牌,因为”-所以JWT只有一个令牌用户在所有设备上使用?这怎么可能呢?服务器创建