1 、若是单纯的浏览文档,不需要记录是谁发送了请求,在某一段时间里浏览了什么,每一次都是一个新的请求。
随着交互式WEB应用的兴起,像购物网站、需要登录的网站等,这就需要区分每个用户,因为HTTP协议是无状态的,无状态的意思就是服务器不保存与客户端交互的任何状态,也就是说,上一次请求对这次没有任何影响,每一次请求都是新的。一开始是使用session和cookie机制,见文档“https://blog.csdn.net/weixin_42037528/article/details/115584069”

这样一来每个人都只需要保存自己的session id,而服务器要保存所有用户的session id,占用服务器空间,而且严重限制了服务器的扩展能力。比如用两个机器做了一个集群,小Q通过机器A登陆了系统,那么sesssion id 会保存在机器A上,假设小Q下次请求被转到机器B该怎么办,机器B没有小Q的session id 。
方法1:session sticky,即请求粘连,让小Q的请求一直粘连在机器A上,但是万一机器A挂掉了,请求还是需要转到机器B上去。
方法2:session复制,把session id在2个机器之间搬来搬去,快累死了
方法3:Memcached想出来吧session集中存储到某个地方,所有的机器都来这个地方访问,这样一来,要是负责存储session的机器挂掉了,所有人都得重新登录一遍。
2、token(令牌) :验证机制
小Q第一次登录到系统中,服务器发一个token(令牌)给她,里面包含和user id,下一次小Q在次通过HTTP请求访问该服务器的时候,把这个token通过HTTP header带过来
不过这和sessionid 没有任何区别啊。任何人都可以伪造,所以得想办法让别人伪造不了。
那就对数据做一个签名,比如使用HMAC-SHA256算法,加上一个只有我知道的密钥,对数据做一个签名,把这个签名和数据作为token,由于别人不知道密钥,就无法伪造token了。


这个token我不保存,当小Q吧这个token发给我的时候,我在用同样的HMAC—SHA256算法和同样的密钥,对数据在做一次签名,和token中的签名作比较,如果相同,服务器就知道小Q已经登陆过了,并且可以直接获取小Q的user id ,数据被人篡改过,我就告诉发送者:对不起,没有认证。


token中的数据是明文保存的(虽然会用base64坐下编码,但那不是加密),还是可以被人看到,所以不能保存向密码这样的敏感信息。
当然,若果token被人偷走了,那我也没有办法,我也会认为小偷是合法用户,这其实和sessionid被别人偷走是一样的。
这样一来,我就不保存session id了,我只是生成token,然后验证token,我用我的CPU计算时间获取了我的session存储空间。

对token(令牌)的理解相关推荐

  1. 【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证

    基于令牌的身份验证 基于令牌的身份验证主要区别于以前常用的基于cookie的身份验证,基于cookie的身份验证在B/S架构中使用比较多,但是在Web Api中因其特殊性,基于cookie的身份验证已 ...

  2. .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

    项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...

  3. PHP Token(令牌)设计

    转载链接:http://www.jb51.net/article/13756.htm PHP Token(令牌)设计 设计目标: 避免重复提交数据. 检查来路,是否是外部提交 匹配要执行的动作(如果有 ...

  4. 微信小程序+TP5——token令牌生成

    token令牌的作用:客户端每次登录服务器端都会生成一个唯一的token令牌值,并返回到客户端,而服务器端会默认将token令牌值作为key, 用户信息作为value,一一对应存入缓存中,当用户每一次 ...

  5. Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证

    Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证 参考文章: (1)Springboot token令牌验证解决方案 在SpringBoot实现 ...

  6. 什么是Token(令牌)

    Acess Token 访问资源接口(API)时所需要的资源凭证 简单token 的组成: uid(用户唯一的身份标识) .time (当前时间的时间戳) ,sign(签名,token的前几位以has ...

  7. token - 令牌

    文章目录 token - 令牌 学前须知: 1,base64 '防君子不防小人' 2,SHA-256 安全散列算法的一种(hash) 3,HMAC-SHA256 4,RSA256 非对称加密 2.1 ...

  8. token令牌的含义和操作

    token 令牌的含义: 是一个加密后的字符串,可以保存信息,也可以设置信息的有效期. token的操作步骤 1.生成token,并且设置和保存数据和有效期(加密过程) 2.返回给前端进行保存 3.前 ...

  9. AOP+自定义注解token令牌和参数防重复提交实战

    目录 一.哪些因素会引起重复提交? 二.重复提交会带来哪些问题? 三.订单的防重复提交你能想到几种方案? 四.自定义注解方式 4.1Java核心知识-自定义注解(先了解下什么是自定义注解) 4.1.1 ...

最新文章

  1. win mysql 最大连接_常用的三种修改mysql最大连接数的方法
  2. Java中的Timer和Timer Task详解
  3. add函数 pytorch_pytorch常用函数
  4. service worker之cache实践--sw-precache
  5. vbS访问mysql语句_关于VBS连接MySQL与连接Excel
  6. python选择语句是什么语句_Python语言中的三种选择语句
  7. 性能优化总结(三):聚合SQL在GIX4中的应用
  8. 百面机器学习——什么是决策树
  9. 五种代理IP proxy的设置方法
  10. Il2CppDumper的使用方法,ILSpy中文版的下载地址
  11. 2020身高体重标准表儿童_2020儿童身高标准表出炉,10岁长到1米4才合格,你家娃达标了吗...
  12. java实现的身份证照片脸部识别(头像截图) 以及OCR字体识别
  13. uniapp——点击图片放大预览
  14. 我的世界Minecraft Java开服教程(Windows)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器资源包
  15. logback.xml和日志输入格式说明
  16. 拿它们练Python爬虫,是在法律边缘试探吗?爬虫圈香饽饽之视频网站的评论区采集
  17. 三峡学院计算机调剂,2018年重庆三峡学院考研预调剂信息公布
  18. 安卓客户端微博登陆(文件不存在 C8998)
  19. Mac使用技巧:轻松自定义设置系统键盘
  20. 2022.3.4总结+45. 跳跃游戏 II 力扣

热门文章

  1. IOS 开发第一个HelloWorld
  2. VR全景为家装赋能,沉浸式体验家装设计效果
  3. 毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)
  4. 解决The following packages have unmet dependencies问题!!!
  5. wordpress只在首页显示友情链接方法
  6. 从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起
  7. 服务器能共享性能吗,共享云服务器性能
  8. 没有性生活、觉得老板傻……我们问了2000个人辞职的理由
  9. 系统架构演变和远程调用
  10. 铁憨憨的Python 爬虫学习 Python_Learn