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

问题描述 投票:1回答:1

我已经阅读了很多有关json令牌与会话的内容,但仍然不了解一些事情。

  1. 使用令牌的好处是可以在多个设备上进行身份验证。

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

    • 我还读到,使用令牌是更简单的,因为它们是无状态的。我只是不明白当涉及到多个设备时这有什么关系。我了解到,对于每个请求服务器,如果使用有效的签名,将使用与发布令牌时使用的签名相同的签名进行检查。客户端需要通过每个请求将该令牌发送到服务器。难道不是一样的-不同的计算机从未将令牌存储在cookie / localstorage中,那么它将如何工作?服务器是否需要创建其他令牌?如果是这样的话,那么当我涉及到多个设备时,为什么会话没有令牌那么有益,为什么我没什么不同!

    • <
  • 对不起,如果它可能太基础了,我只是读了很多,只是不了解基础。
  • session jwt
    1个回答
    0
    投票

    会话存储在服务器的RAM或数据库中,以存储用户所在的位置或用户在做什么。例如,您存储用户正在处理的当前页面。

      但是JWT是无状态的。服务器不会将用户状态或其数据保存到RAM或数据库中。服务器会为用户生成一个密钥,其中包括一些重要的身份验证数据(例如,用户名,角色,最后访问日期),因此用户必须在每次请求时都发送其密钥,直到密钥过期为止,并且他必须请求另一个密钥。由于密钥仅包含用户身份验证数据,因此可以在每个设备中使用(直到过期)。
  • 正如您在移动应用程序中提到的,用户获得多个会话,因此JWT主要用于移动或单页应用程序中。用户获得密钥,并且用户活动状态将由移动应用程序处理。希望这会有所帮助。
  • © www.soinside.com 2019 - 2024. All rights reserved.