对token(令牌)的理解
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(令牌)的理解相关推荐
- 【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证
基于令牌的身份验证 基于令牌的身份验证主要区别于以前常用的基于cookie的身份验证,基于cookie的身份验证在B/S架构中使用比较多,但是在Web Api中因其特殊性,基于cookie的身份验证已 ...
- .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...
- PHP Token(令牌)设计
转载链接:http://www.jb51.net/article/13756.htm PHP Token(令牌)设计 设计目标: 避免重复提交数据. 检查来路,是否是外部提交 匹配要执行的动作(如果有 ...
- 微信小程序+TP5——token令牌生成
token令牌的作用:客户端每次登录服务器端都会生成一个唯一的token令牌值,并返回到客户端,而服务器端会默认将token令牌值作为key, 用户信息作为value,一一对应存入缓存中,当用户每一次 ...
- Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证
Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证 参考文章: (1)Springboot token令牌验证解决方案 在SpringBoot实现 ...
- 什么是Token(令牌)
Acess Token 访问资源接口(API)时所需要的资源凭证 简单token 的组成: uid(用户唯一的身份标识) .time (当前时间的时间戳) ,sign(签名,token的前几位以has ...
- token - 令牌
文章目录 token - 令牌 学前须知: 1,base64 '防君子不防小人' 2,SHA-256 安全散列算法的一种(hash) 3,HMAC-SHA256 4,RSA256 非对称加密 2.1 ...
- token令牌的含义和操作
token 令牌的含义: 是一个加密后的字符串,可以保存信息,也可以设置信息的有效期. token的操作步骤 1.生成token,并且设置和保存数据和有效期(加密过程) 2.返回给前端进行保存 3.前 ...
- AOP+自定义注解token令牌和参数防重复提交实战
目录 一.哪些因素会引起重复提交? 二.重复提交会带来哪些问题? 三.订单的防重复提交你能想到几种方案? 四.自定义注解方式 4.1Java核心知识-自定义注解(先了解下什么是自定义注解) 4.1.1 ...
最新文章
- win mysql 最大连接_常用的三种修改mysql最大连接数的方法
- Java中的Timer和Timer Task详解
- add函数 pytorch_pytorch常用函数
- service worker之cache实践--sw-precache
- vbS访问mysql语句_关于VBS连接MySQL与连接Excel
- python选择语句是什么语句_Python语言中的三种选择语句
- 性能优化总结(三):聚合SQL在GIX4中的应用
- 百面机器学习——什么是决策树
- 五种代理IP proxy的设置方法
- Il2CppDumper的使用方法,ILSpy中文版的下载地址
- 2020身高体重标准表儿童_2020儿童身高标准表出炉,10岁长到1米4才合格,你家娃达标了吗...
- java实现的身份证照片脸部识别(头像截图) 以及OCR字体识别
- uniapp——点击图片放大预览
- 我的世界Minecraft Java开服教程(Windows)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器资源包
- logback.xml和日志输入格式说明
- 拿它们练Python爬虫,是在法律边缘试探吗?爬虫圈香饽饽之视频网站的评论区采集
- 三峡学院计算机调剂,2018年重庆三峡学院考研预调剂信息公布
- 安卓客户端微博登陆(文件不存在 C8998)
- Mac使用技巧:轻松自定义设置系统键盘
- 2022.3.4总结+45. 跳跃游戏 II 力扣
热门文章
- IOS 开发第一个HelloWorld
- VR全景为家装赋能,沉浸式体验家装设计效果
- 毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)
- 解决The following packages have unmet dependencies问题!!!
- wordpress只在首页显示友情链接方法
- 从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起
- 服务器能共享性能吗,共享云服务器性能
- 没有性生活、觉得老板傻……我们问了2000个人辞职的理由
- 系统架构演变和远程调用
- 铁憨憨的Python 爬虫学习 Python_Learn