JWT简介
Json web token (JWT), 是为了在网络应用间传递声明的基于JSON的开放标准,该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。其中的分布式站点的单点登陆的状态保持,在这里简单介绍下:举京东的例子,主页www.jd.com作为一个站点部署在单独的服务器上,其购物车www.car.jd.com作为单独的一个站点部署在单独的服务器上。那么单点登陆,意思就是在这两个站点中的任意一个完成登陆之后,在另外的一个站点也会完成状态保持,就是单点登陆。好了言归正传介绍JWT。
JWT在实现状态保持上有着得天的优势:1>json的通用性,所以JWT是可以进行跨语言支持的 2>jwt的构成非常简单,字节占用很小,便于传输 3>扩展性好不需要在服务端保存会话信息
传统的状态保持实现方法
session
http协议本身是一种无状态的协议,如果需要实现用户状态保持,我们通常使用session,将用户信息存储在服务端,并把session的key响应给浏览器的cookie中,用户下一次再来访问我们的时候带上cookie我们就可以对其实现状态保持。这样做的缺点很多:1>当用户量很大的时候我们需要在服务端缓存大量的session信息,如果缓存在服务器的内存中,服务端开销会变大,甚至会出现严重的后果2>cookie在浏览器中用户可以选择禁用的,我们就无法实现状态保持3>扩展性不好,session是保存在服务器的内存中的,当有多个站点的时候就无法实现多站点的任意单点状态保持。