Cookie,Session与Token

  1. Cookie
        什么是cookie?cookie是在client访问网站时,由server返回的一种标记为cookie类型的数据。server返回后浏览器将cookie存储在client电脑上,以后每次访问该server浏览器都会在http的请求头中加入cookie发送。
  2. Session
        在client访问server时,应用服务器对client发送的账号密码进行验证,如果在数据库中查询到相应的信息,即账号密码正确,则服务器会创建一个session并为这个session通过一定的算法生成唯一的key(也就是标识)即sessionid,将sessionid和session分别作为键值保存至缓存或者数据库中,并将sessionid放在cookie中(Set-Cookie)返回给client。client收到cookie后,以后发送请求时会将cookie一并发送,server会在数据库中查询收到的cookie中的sessionid是否有匹配,如果匹配则进一步检查sessionid是否与库中的某一账户匹配,以及session此时否已经失效。
        在上述的过程中cookie充当了桥梁和载体的作用,如果浏览器禁用了cookie或者本身不支持cookie,则可以通过url重写的方式发送到服务器。
  3. Token
        出现背景:session的存储需要空间,一般通过cookie传递,或者url重写;而token在服务器时可以不存储用户信息的,而且token的传递可以通过cookie但不局限于通过cookie,同样可保存。
        生成方式:client访问server时,在验证成功后server会根据发送来的数据使用Hash算法生成唯一的一个密钥(如HMAC-SHA256算法),生成一个token,然后通过BASE64编码后返回给client这个token,client将这个token保存下来,在下次发送请求时,在请求中加入token,server收到请求后,使用相同的密钥和算法去验证token,如果通过,则执行业务逻辑返回数据,如果不通过,则不执行。如果过期,则需要重新发送一次认证请求。
        使用场景:防止表单重复提交,anti csrf攻击(跨站请求伪造),身份验证
  4. Session与Token的区别
        token和session都可以完成身份验证,session会在服务器中保存一份,一般存储在缓存,文件或者数据库中;session与token都有过期时间。token消耗的服务器资源相对更少,也更快,因为省去了去数据库中查询验证的步骤,只是通过相同的算法进行推演得到结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值