Cookie、Session、Token、JWT分别是什么(二)
什么是 Token(令牌)
Acesss Token
- 访问资源接口(API)时所需要的资源凭证
- 简单 token 的组成: uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串)
- 特点:
- 服务端无状态化、可扩展性好
- 支持移动端设备
- 安全
- 支持跨程序调用
- token 的身份验证流程:
- 客户端使用用户名跟密码请求登录
- 服务端收到请求,去验证用户名与密码
- 验证成功后,服务端会签发一个 token 并把这个 token 发送给客户端
- 客户端收到 token 以后,会把它存储起来,比如放在 cookie 里或者 localStorage 里
- 客户端每次向服务端请求资源的时候需要带着服务端签发的 token
- 服务端收到请求,然后去验证客户端请求里面带着的 token ,如果验证成功,就向客户端返回请求的数据
- 每一次请求都需要携带 token,需要把 token 放到 HTTP 的 Header 里
- 基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析 token 的计算时间换取 session 的存储空间,从而减轻服务器的压力,减少频繁的查询数据库
- token 完全由应用管理,所以它可以避开同源策略
Refresh Token
- 另外一种 token——refresh token
- refresh token 是专用于刷新 access token 的 token。如果没有 refresh token,也可以刷新 access token,但每次刷新都要用户输入登录用户名与密码,会很麻烦。有了 refresh token,可以减少这个麻烦,客户端直接用 refresh token 去更新 access token,无需用户进行额外操作。
- Access Token 的有效期比较短,当 Acesss Token 由于过期而失效时,使用 Refresh Token 就可以获取到新的 Token,如果 Refresh Token 也失效了,用户就只能重新登录了。
- Refresh Token 及过期时间是存储在服务器的数据库中,只有在申请新的 Acesss Token 时才会验证,不会对业务接口响应时间造成影响,也不需要向 Session 一样一直保持在内存中以应对大量的请求。
Token 和 Session 的区别
- Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息。而 Token 是令牌,访问资源接口(API)时所需要的资源凭证。Token 使服务端无状态化,不会存储会话信息。
- Session 和 Token 并不矛盾,作为身份认证 Token 安全性比 Session 好,因为每一个请求都有签名还能防止监听以及重放攻击,而 Session 就必须依赖链路层来保障通讯安全了。如果你需要实现有状态的会话,仍然可以增加 Session 来在服务器端保存一些状态。
- 所谓 Session 认证只是简单的把 User 信息存储到 Session 里,因为 SessionID 的不可预测性,暂且认为是安全的。而 Token ,如果指的是 OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对 App 。其目的是让某 App 有权利访问某用户的信息。这里的 Token 是唯一的。不可以转移到其它 App上,也不可以转到其它用户上。Session 只提供一种简单的认证,即只要有此 SessionID ,即认为有此 User 的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方 App。所以简单来说:如果你的用户数据可能需要和第三方共享,或者允许第三方调用 API 接口,用 Token 。如果永远只是自己的网站,自己的 App,用什么就无所谓了。
需要更多教程,微信扫码即可
Cookie、Session、Token、JWT分别是什么(二)相关推荐
- 熬夜彻底搞懂Cookie Session Token JWT
一切的根源就是因为 HTTP 是一个无状态的协议. HTTP 是一个无状态的协议 什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的. 看过电影<夏洛特烦恼&g ...
- 2、cookie session token详解
cookie session token详解 转自:http://www.cnblogs.com/moyand/ 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, ...
- Cookie Session Token 与 JWT 解析
首先先了解一些关键词 认证.授权与凭证 什么是认证(Authentication)? 通俗地讲就是 验证当前用户的身份是否合法的过程,即你是谁?证明"你是你自己"(比如:你每天上下 ...
- 什么是 Cookie Session 和 JWT
无状态 Q: 大家都知道HTTP是无状态的协议, 那怎么理解无状态呢? A: 想象一下你们公司有个看门的门卫, 记性特别差, 还是个脸盲, 但是特别有职业操守, 每次出门回来都管你要出入证; 有一次, ...
- cookie session token区别_彻底理解cookie,session,token
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者: 墨颜丶 cnblogs.com/moyand/p/9047978.html 发展史 ...
- cookie session token区别_cookie、session与token的真正区别
发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记 ...
- cookie session token 之间的区别
cookie 和session的区别 1.cookie数据存放在客户的浏览器上,session数据放在服务器上. 2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 ...
- 大剑无锋之浅析Cookie/Session/Token
Cookie Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式.Cookie存储的数据量有限,且都是保存在客户端浏览器中.不同的浏览器有不同的存储大 ...
- 测试面试题:cookie/session/token 分别表示什么意思,有什么区别?
测试面试必问: token,cookie,session 有什么区别? 1.解释 1>Cookie cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实 ...
- 复习深入笔记02:魔法方法/cookie,session,token/异常
魔法方法 对象生成 1.先调用__new__方法,生成空对象.控制对象生成. 2.当执行"对象=类名(name=lqz)",触发类的__init__()
最新文章
- 域名扫描工具Fierce
- 快速排序时间复杂度为O(n×log(n))的证明
- python中自定义变量名标识符_name是python的标识符吗
- android中心点旋转晃动_Android:如何在中心点上旋转位图
- winCVS 使用方法
- HDU 2845 Beans
- Java小白零基础学习如何突破自己的方法
- 基于Java+SpringBoot+vue+elementui的校园文具商城系统详细设计和实现
- C++ 处理输入输出错误
- RN position定位及Android兼容处理
- C#语法基础(二)---数组stringArrayList
- Nodejs手把手教程
- SAP中会计凭证红蓝冲相关分析测试笔记续(手工反记账红冲)
- 关于 Alpine Docker 镜像漏洞 CVE-2019-5021
- HDU-2859 Phalanx
- 如何获取微信文章阅读数和点赞数
- matlab棋盘格标定角点,相机标定(Camera calibration)Matlab——棋盘格标定原理,流程...
- JAVA安全之JAVA服务器安全漫谈
- Mac电脑程序员常用软件集锦
- OSChina 周三乱弹 ——小时候,女孩子喜欢娃娃,长大后
热门文章
- 携程内部信:公司高管自愿降薪 梁建章和孙洁将0薪
- 中国移动首款自主品牌5G手机上市:同步支持NSA/SA
- 成也炒作,败也炒作?孙宇晨遭遇最大信任危机
- 苹果挖来ARM顶尖芯片工程师开发芯片 以减少对英特尔依赖
- 2299元 OPPO K3 8GB+256GB版本线上线下同步开售
- 暴风集团否认暴风TV公司解散:融资事项正在加紧推进中
- 黄子韬现身助力公益 百度推出听障儿童手语翻译小程序
- 全通教育回应深交所:巴九灵年赚7500万 没有吴晓波依然正常运作
- 华扬联众携手搜狗,助雅诗兰黛跃居女神节“C位”
- 拳王虚拟项目公社:通过网络卖虚拟产品,月入1W的全自动化推广引流技术