面试:token、session、cookie三者区别

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

2.传统身份验证
HTTP是一种没有状态的协议,并不知道谁是访问者。假设一个客户端访问服务端时发送账号密码,通过验证。下回它再次访问时,还是需要验证。
解决办法(session+cookie):
1)客户端访问时,通过了验证。
2)服务端生成一条记录,记录一些必要信息。
3)把记录这些信息的ID号发送给客户端
4)客户端收到ID号后存储在cookie中
5)下次客户端重新访问服务端时,带上cookie信息
6)服务端验证cookie里面的信息,如果能找到对应的记录,则用户通过了验证

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

4.常见问题
1.服务器上的token存储到数据库中,每次查询会不会很费时?

如果存储到数据库中会造成系统的性能问题,可以放在内存中

2.客户端得到的token需要如何处理?

i.在存储的时候把token对称加密
ii.将请求url、时间戳、token三者合并加盐签名,服务器验证有效性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值