1、基于session的用户身份验证
验证过程:服务端验证 浏览器携带的用户名和密码,验证通过后生成用户凭证保存在服务端(session),浏览器再次访问时,服务端查询session,实现登录状态保持。
缺点:
随着用户的增多,服务端压力增大;
若浏览器cookie被攻击者拦截,容易受到跨站请求伪造攻击;
分布式系统下扩展性不强。
2、基于token的用户身份验证
验证过程:服务端验证浏览器携带的用户名和密码,验证通过后生成用户令牌(token)并返回给浏览器,浏览器再次访问时携带token,服务端校验token并返回相关数据。
优点:
token不储存在服务器,不会造成服务器压力;
token可以存储在非cookie中,安全性高;一般存放于客户端localStorage。
分布式系统下扩展性强。
2.1、JWT的组成
JWT分成三部分,第一部分是头部(header),第二部分是载荷