Cookie-Session,Token-JWT

177 阅读1分钟

前端页面有些接口是需要凭证的,认证成功后数据正确,才成功返回数据,或没有凭证的话,就返回401状态码(需用户验证),实现的方法普遍是使用以下两种。

  1. Cookie-Session,也就是,用户登陆的时候,会返回set Cookcookieie(sessin_id),也就是会浏览器中cookie存储 sessin_id,cookie默认情况下会每一发送请求都会携带在请求头中发送给服务器,服务器会根据sessin_id本地查询、数据库查询,在进行校验等操作,需记录当前状态会话,HTTP是无状态的,若会出现多个服务器的情况,需将sessin_id共享,操作会复杂。 2、JWT,无需记录状态,由3部分组成,用户登陆的时候,后端加密返回token,前端接收,存放在storage中,再次发送就在请求头中携带, axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; 后端接受后解密即可获取用户信息,方便操作。

继续扩展,一般项目的返回401的时候,也就是无权限,大概有两种情况,其一,用户未登陆,未存在token,其二,token失效。 或项目存在refresh——token时,重新刷新token即可,或refresh——token也失效,即重新登陆,重新刷新token思路如下:

  • 判断token是否过期 以及是否即将过期
  • 过期后, 发送刷新token请求, 并将刷新token期间请求的接口缓存起来
  • 请求成功后, 在重新请求之前的请求