我已经阅读了很多有关json令牌与会话的内容,但仍然不了解一些事情。
使用令牌的好处是可以在多个设备上进行身份验证。
假设用户在网站上注册,服务器生成会话ID,发送给客户端,客户端将其保存在Cookie或本地存储中(因此,每当用户要再次登录网站时,客户端都会在每次请求时向服务器发送会话ID,服务器查询db并检查是否相同的ID(如果是,则发送响应)。然后,同一用户使用移动应用程序登录,因为会话ID仅存储在计算机浏览器的cookie /本地存储中,而不存储在移动设备或其他计算机上,那么从不同计算机或移动设备进行的登录将如何发生?用户登录到的每个设备的会话ID不同,然后服务器上存储着某种数组,其中包含所有用户的会话ID?!
我还读到,使用令牌是更简单的,因为它们是无状态的。我只是不明白当涉及到多个设备时这有什么关系。我了解到,对于每个请求服务器,如果使用有效的签名,将使用与发布令牌时使用的签名相同的签名进行检查。客户端需要通过每个请求将该令牌发送到服务器。难道不是一样的-不同的计算机从未将令牌存储在cookie / localstorage中,那么它将如何工作?服务器是否需要创建其他令牌?如果是这样的话,那么当我涉及到多个设备时,为什么会话没有令牌那么有益,为什么我没什么不同!
会话存储在服务器的RAM或数据库中,以存储用户所在的位置或用户在做什么。例如,您存储用户正在处理的当前页面。