首页 > 图灵资讯 > java面试题>正文

为什么会有JWT的出现?

2024-06-05 13:13:45

首先不得不提到一个知识叫做跨域身份验证,JWT的出现就是为了更好的解决这个问题,但是在没有JWT的时候,我们一般怎么做呢?一般使用Cookie和Session,流程大体如下所示:

1、用户向服务端发送用户名和密码进行验证

2、服务端验证之后,相关数据(如用户角色、登录时间等信息)会保存在当前的Session中

3、服务端向用户返回一个唯一的session_id,同时在响应请求中设置cookie,属性名为jessionid

4、客户端收到之后会保存jessionid,再次请求的时候,会在header中设置,服务端可以从请求头中获取

5、服务端验证获取到的sessionid是否存在,即可验证是否是同一用户

使用Cookie和Session这种模式最大的问题之一就是它不支持横向扩展,也就是不支持分布式架构,如果当前只有一台服务器,那就没什么问题,但是在当下的时代,一台服务器往往是不够的,现在绝大多数都是服务器集群。如果是服务器集群,那么在负载均衡的时候就不能保证每次都发送到同一台服务器上,这样的话也就不能验证用户的身份了,但是这对用户是不友好的,用户是感知不到自己的请求发送到了别的服务器上的。

所以这个时候就提出来了让session落库,当一个请求发过来之后,验证服务从数据库去验证用户身份,这样就能让各个服务器正确的验证用户身份信息,但是这样做,依赖性太强,如果这个session数据库挂了,那么整个认证系统都会崩溃。

上一篇 布隆过滤器
下一篇 JWT的面世

文章素材均来源于网络,如有侵权,请联系管理员删除。