Cookie+Session与Token验证服务器端

HTTP是一种没有状态的协议,每次访问服务器的时候,都需要告诉服务器访问者的身份。假设用户就是客户端,客户端使用用户名和密码通过了身份验证,但是下回这个客户端再发送请求的时候,就需要再次验证。我们可以使用Cookie+Session或者token来完成服务器端的验证。

Cookie+Session验证服务器端的过程

用户在客户端提交表单登录,服务器端通话验证之后,生成一个Session对象,用来存放用户登录信息,并将SessionID存放到Cookie中,通过HTTP响应发送到客户端,客户端就会在一定时间内保存cookie,此后的访问请求都会在请求头中带上Cookie的值,用于服务器端验证,从而达到一次登录,后续就不再需要验证的目的。

使用Session的缺点
  1. 当服务器访问量增加的时候,就会存在很多Session,如果没有设置超时或者销毁的话,就很容易造成服务器崩溃等情况。
  2. 当服务端为集群或者分布式的时候,用户登陆其中一台服务器,会将session保存到该服务器的内存中,但是当用户访问到其他服务器时,会无法访问,通常采用缓存一致性技术来保证可以共享,或者采用第三方缓存来保存session,不方便。

Token验证服务器端

使用Token验证服务器端,不需要在服务器存储用户的登录记录,只需要对Token中携带的信息进行验证。无论客户端访问后台的是哪一台服务器,只要可以通过用户信息验证就可以了。
验证流程:

  1. 用户在客户端使用用户名和密码请求登录;
  2. 服务端收到请求,去验证用户名和密码;
  3. 验证成功后,服务端会签发一个token(加了密的字符串),再把这个token发送给客户端;
  4. 客户端收到token以后可以把它存储到本地浏览器,比如存储到cookie或者localStorage中;
  5. 客户端每次向服务端请求资源的时候都需要带着服务端签发的token;
  6. 服务端收到请求,然后去验证客户端请求里面携带的token,如果验证成功,就给客户端返回请求的数据;
Token时序图表示
  1. 登录
    在这里插入图片描述

  2. 业务请求
    在这里插入图片描述

  3. Token过期,刷新Token
    在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值