Token、Session、Cookie的区别

token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由于token的前几位+盐 以hash算法压缩成一定长的16进制字符串,可以防止恶意第三方拼接token请求服务器),还可以把不变的参数也放进token,避免多次查库。

传统的身份验证:

session + cookie

  1. 客户端访问,通过验证
  2. 服务器生产一条记录,记录一些必要信息
  3. 把记录这些信息的ID号发送给客户端
  4. 客户端收到ID号后存储在cookie中
  5. 下次客户端重新访问服务端是,带上cookie信息
  6. 服务端验证cookie里面的信息,如果能找到对应的记录,则用户通过了身份验证,就把用户请求的数据返回给客户端

我们需要在服务器端存储为登录的用户生成的Session,这些Session可以存储在内存,磁盘,或者数据库里。我们可能需要在服务器端定期的去清理过期的Session。

基于Token的身份验证

使用基于Token的身份验证方法在服务器段不需要存储用户的登陆记录。

  1. 客户端使用账号密码请求登录
  2. 服务器端收到请求,验证账号密码
  3. 验证通过,服务端签发一个token给客户端
  4. 客户端收到token存储起来(例如:存放在cookie)
  5. 客户端每次请求服务端时带着服务端签发的token
  6. 服务端收到请求,验证token。验证成功则返回数据,失败则重新登录。

猜你喜欢

转载自blog.csdn.net/weixin_39590058/article/details/88014364