session共享的原因:维护用户状态、提升用户体验、负载均衡、资源共享。
一、粘滞会话:也称为会话保持,是指在负载均衡环境中确保用户的连续请求被转发到同一台服务器上的一种机制。
二、会话复制:在服务器集群中,通过同步机制将会话信息从一个服务器复制到其他服务器,使得每个服务器都有相同的会话信息
三、Session数据集中存储:将会话信息存储在数据库中,所有服务器都可以访问同一个数据库来获取或更新会话信息。这种方法的稳定性好,但可能会影响数据库的性能
四、基于Token认证(JWT) : ①将用户会话信息加密并存储在客户端来实现会话共享,JWT包含了必要的用户信息,服务器无需存储会话信息,使得服务器可以无状态运行;②我们的JWT存储在localstorage中,前端每次向服务器发送请求通过请求头传递token供后端验证和解析。
说完第四点可以关联到登录流程。。。。
jwt是实现token的一种机制。
为什么说jwt是无状态的:
传统的基于Session的身份验证机制中,服务器会在用户登录成功后创建一个Session,并将Session ID存储在客户端的Cookie中。每当客户端发起请求时,会携带这个Session ID,服务器则需要查找与该ID相关的Session信息,以确定用户的认证状态。
相比之下,JWT是一种自包含的令牌,这意味着令牌本身包含了所有必要的信息,包括用户身份、权限以及其他任何自定义声明。当客户端向服务器发送请求时,它将JWT作为身份证明一起发送。服务器接收到请求后,可以直接从JWT中提取这些信息,而无需查询任何存储Session的数据库或缓存。