版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
有无状态登录,相对应的就会有有状态登录.
什么是有状态登录?
有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session.
例如:用户登录后,我们把登录者的信息保存在服务端的session中,并且给用户一个cookie值,来记录对于的session,然后下次请求的时候,用户携带cookie来,我们就能识别到session中的用户的信息。
有什么缺点呢?
1.服务端保存大量数据,增加服务端压力。
2.服务端保存用户信息,无法水平扩展。
3.客户端依赖服务端,多次请求必须访问同一台服务器
什么是无状态登录?
微服务集群中的每个服务,对外提供的rest风格的接口,而rest风格的一个最重要的规范就是:服务的无状态性。即:
服务端不保存任何客户端请求者的信息。
客户端的每次请求都必须具备自述信息,通过这些信息识别客户端身份。
带来的好处:
客户端的请求不依赖服务端,每次请求不需要访问同一台服务器
减小服务端的存储压力
服务端的集群和状态对客户端时透明的
服务端可以任意的迁移和伸缩
如何实现无状态登录.
无状态登录流程:
当客户端第一次登录的时候,服务端对用户进行信息认证。(登录)
认证通过,将用户信息进行加密形成token,返回给客户端,作为登录凭证。
以后每次的请求,客户端都携带认证的token。
服务端对token进行解密,判断是否有效。