SpringBoot__JWT无状态服务和Spring Security登入认证

JWT(Java Web Token):是一种没有和任何语言绑定的可以实现无状态、分布式的web应用授权和身份认证的JSON风格轻量级规范。

JWT的数据格式
三部分:
Header头部:头部进行Base64Url编码(可解码),得到第一部分数据。
Payload载荷:也会用Base64Url编码,得到第二部分数据。
Signature签名:签名,是整个数据的认证信息。

再来聊聊什么是有状态服务和无状态服务了?

有状态服务:我们知道Http是一种无状态的协议,每一次请求都是独立的。在每一次的会话中,服务端需要记录客户端发送过来的相关信息,然后进行操作。例如传统登入操作时利用Session,客户端发送请求把登入用户信息发送到服务端,服务端接受进行认证等操作后,需要把用户相关信息存入到服务端Session中,我们都知道Session的底层其实是Cookie,然后把返回一个Cookie值给客户端,也就把SessionId复制给了Cookie,在客户端查看可以看到JESSIONID,这个过程是由浏览器自动完成的。这种每次会话在服务端把用户信息存入Session中,而在客户端把信息存入Cookie中,就是有状态的服务

无状态服务:服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。客户端每次请求必须具备所有该具备的信息,而服务端不保存客户端发送过来的信息。也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息

有状态和无状态简单比较:

有状态服务因为要在服务端保存数据,那么数据过大,过多,就会产生压力,而且因为要在服务端保存信息,所以也就不支持集群部署了。

无状态服务因为每一次请求

你可能感兴趣的:(SpringBoot)