- 无状态登录(JWT无状态登录):
无状态登录是一种基于令牌(Token)的身份验证方式,其中令牌包含了用户的身份信息和授权信息。JWT(JSON Web Token)是一种常用的无状态登录机制。
- 用户登录时,服务器验证用户的身份,并生成一个JWT令牌,将其返回给客户端。
- 客户端将JWT令牌保存在本地,通常是在浏览器的本地存储(如localStorage或sessionStorage)中。
- 客户端在每次请求时,将JWT令牌作为身份验证凭证发送给服务器。
- 服务器验证JWT令牌的有效性,并根据令牌中的信息进行身份验证和授权。
优点:无状态登录不需要在服务器端存储会话信息,因此可以方便地进行横向扩展和分布式部署。
缺点:无状态登录无法立即撤销令牌,令牌一旦被泄露,任何人都可以使用它访问受保护的资源。
- 有状态登录:
有状态登录是一种基于会话(Session)的身份验证方式,其中服务器在用户登录后创建一个会话,并将会话ID存储在服务器端。客户端通过将会话ID存储在Cookie中,或者在每个请求中将会话ID作为参数或标头发送给服务器来进行身份验证。
- 用户登录时,服务器验证用户的身份,并创建一个唯一的会话ID。
- 服务器将会话ID存储在服务器端,并将其发送给客户端,通常是通过设置Cookie。
- 客户端在每次请求时,将会话ID发送给服务器进行身份验证和授权。
优点:有状态登录可以方便地撤销会话,服务器可以在需要时立即终止会话。
缺点:有状态登录需要在服务器端存储会话信息,可能会导致服务器的负载增加,并且需要进行会话管理