用户鉴权的三种方式,Cookie、Cookie+Session、Token

在这里插入图片描述

      一个网站用户对动态的评论、置顶等等操作,服务器都需要对客户端验证是否有用户登录,如果无用户登录则提示用户跳转到登录页面进行登录。
      但是HTTP协议是无状态,一次请求对应一个响应,后续的系统操作,需要重新请求服务器。也就是说服务器无法识别客户端请求属于哪个用户发送的请求。
      为了保存用户登录状态,让服务器识别不同是不同用户发送的请求而返回不同响应,于是就有了Cookie、Cookie+Session、Token等几种鉴权方式用于保存用户的登录状态。
      使用纯Cookie的方式,用户在登录之后将用户的id或者用户账户发送到客户端,客户端保存Cookie,客户端每次请求时自动带上保存的Cookie,服务器接收到请求时,取出Cookie的用户id来鉴别用户。但是这种方式较为不安全,因为用户id、用户名这些信息都暴露在Cookie里。
      后来为了安全又有了Session,Session接收请求后,保存一个会话id到服务器内存中,通过Cookie将此id发送给客户端,同样客户端每次请求时带上这个Cookie与服务器保存的Session ID对来鉴别用户。因为Cookie不保存用户信息,所以较为安全,但是降低了服务器的性能,因为服务器需要在内存保存Session数据。
      有人可能会有疑问?同样Cookie是保存id,Session也是保存id,为什么Session就是安全的,Cookie就没那么安全。因为Session是动态生成且会过期的,Cookie也会过期,但是他每次保存的Cookie的id是数据库里对应用户的那个id,每次都是一样的。而Session id则每次都会重新生成id所以不相同。
      前后端分离的出现,带来了一种解决上述安全和性能问题的方案Token。
      Token使用非对称加密,密钥保存在服务器中,服务器将用户id写入Token,并对其加密发送给客户端。客户端接收后保存到本地,每次请求带上这个Token,Token通过密钥解析出用户id来鉴别用户。这样别人无法解析出Token加密后的用户id,服务器也不需要使用内存来保存,因为直接用密钥解析Token里的用户id即可识别用户。
      以上三种用户鉴权方式都存在过期时间,一旦过期,即使请求时带上了鉴权,服务器校验时依然会返回登陆过期提示给客户端。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vgbire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值