必备-16.跨域身份验证方式
登录态校验
- 登录态校验
- 第一步:客户端发送POST请求做登录态校验,服务器端检验用户名密码是否准确,如果正确则返回成功
- 第二步:客户端收到成功响应后,在本地手动设置cookie,存储登录成功,例如:
isLogin=true
- 第三步:之后再访问页面,检测本地是否有isLogin的cookie信息,有表示已经登陆过了,无需再验证
- 缺陷:
- 不准确,不安全,cookie可以随便修改
客户端设置cookie
- 客户端设置cookie:会话存储
- 第一步:客户端发送POST请求登录,
- 第二步:服务器做账号密码验证,如果正确在响应头中设置session信息:
Set-Cookie:connect.sid
- 第三步:客户端收到响应头中有
Set-Cookie:connect.sid
,会在缓存中存储一份 - 第四步:之后再访问页面,客户端会携带
connect.sid
请求校验,服务器会查找自己的session来看是否匹配成功 - 缺陷:
- session中有信息则是登录,否则没登录
- session容易丢失【过去时间、服务器重启,session信息就没有了】
- 和cookie相关,它也容易丢失
- 不利于服务器的分布式
- 优势:利用了cookie和服务器端的"猫腻",不需要前端自己设置cookie和传递cookie信息

使用Token
- 使用Token[常用]
- 第一步:客户端向服务器发送登录请求,服务器进行校验:
- 账号密码如果正确:基于JWT算法,生成一个Token信息【含有密钥、登录者、过期日期等信息】,“服务器端不需要存储这个Token”
- 第二步:服务器手动把Token给客户端
- 第三步:客户端获取Token后,存储到本地:可以用
localStorage、sessionStroage、vuex/redux...
- 第四步:再次访问首页时,需要手动将缓存的Token发给服务器端==【基于axios的请拦截器】==
- 第五步:服务器拿到Token后,再基于JWT反反解析,验证它的有效性
- 优点:实时校验,要稳定以及有利于服务器分布
- 缺点:性能略低[忽略],需要自己写代码。
- 第一步:客户端向服务器发送登录请求,服务器进行校验:

三种情况