通俗的来说就是暗号(一串字符串或者别的),这个暗号可以用来做很多事,最常做的是身份验证。

基于session的网站身份验证流程:(传统验证流程)

  因为http协议是无状态的,用户在利用账号密码登陆验证后,后面的请求,服务器无法验证用户的身份,所以,在登陆后,服务器会给客户端发session(会过期),存在cookie里,客户端登陆后的请求都带有这个session,服务器校验session,如果通过,就返回相应信息。

基于token的身份验证流程:

  token也一样。

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

一个通用的标准web token:JSON Web Tokens

长这样:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc

构成:

  header.PayLoad.Signature

header:

  一个是 Token 的类型,另一个是使用的token加密算法

  {"typ": "JWT","alg": "HS256"}

Payload:
  • iss:Issuer,发行者
  • sub:Subject,主题
  • aud:Audience,观众
  • exp:Expiration time,过期时间
  • nbf:Not before
  • iat:Issued at,发行时间
  • jti:JWT ID
Header和Payload都要编码成一个字符串

Signature:  JWT 的最后一部分是 Signature ,这部分内容有三个部分,先是用 Base64 编码的 header.payload ,再用加密算法加密一下,加密的时候要放进去一个 Secret ,这个相当于是一个密码,这个密码秘密地存储在服务端。
  var encodedString = base64UrlEncode(header) + "." + base64UrlEncode(payload); signature = HMACSHA256(encodedString, 'secret)
 
Cookie:  http无状态下,浏览器客户端为了维持客户端和服务器会话状态的字段(字符串),Cookie的内容也是明文保存的,有些浏览器提供界面修改,所以, 不适合保存重要的或者涉及隐私的内容。

  是客户端生成的,理论上用来存储一些额外页面信息。

会存在客户端请求包的header里

session: 

http无状态下,服务器为了维持客户端和服务器会话状态的字段(字符串),一般用cookie来传递因为会占用服务器的内存,所以最好用来存一下重要的信息,如登陆信息。

转载于:https://www.cnblogs.com/yiii/p/6753144.html

token,session,cookie相关推荐

  1. 【转】彻底理解cookie,session,token

    转自:https://zhuanlan.zhihu.com/p/63061864 彻底理解cookie,session,token 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是 ...

  2. 【全栈接口测试进阶系列教程】精通api接口测试,接口分类,接口架构,http,webservice,dubbo接口协议,接口流程,接口工具,cookie,session,token接口鉴权原理以及实战

    目录 一,[什么是接口测试?为什么要作接口测试] 1.接口的作用 2.为什么要做接口测试 3.接口都有哪些类型? 二,[接口测试的分类] 接口的分类: http和webservice接口区别: 三,[ ...

  3. 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token...

    为什么你学不会递归?告别递归,谈谈我的一些经验 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! 可 ...

  4. equest,response,session,cookie,application

    equest,response,session,cookie,application 觉得写的非常好..很齐全 A:request  客服端向服务器端请求 JAVA讲究封装,所以Request也是某个 ...

  5. 会话跟踪技术,Session和Cookie详解

    知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文 ...

  6. 【网络通信与信息安全】之深入分析Token、session和cookie的使用场景和区别

    在 Web 开发领域,相信大家对于 Cookie 和 Session 都很熟悉,Cookie 和 Session 都是会话保持技术的解决方案.随着技术的发展,Token 机制出现在我们面前,不过很多开 ...

  7. 一篇有关javaWeb的,有关转发,重定向,session,request域的综合小案例:验证码

    **发一篇有关javaWeb的,有关转发,重定向,session,request域的综合小案例:验证码. 需求是: 1. 访问有验证码的登陆页面login.jsp 2. 用户输入用户名,密码以及验证码 ...

  8. 彻底理解cookie,session,token

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:墨颜丶 cnblogs.com/moyand/p/9047978.html 发展史 1.很 ...

  9. 彻底理解 Cookie,Session,Token

    点击上方视学算法,选择 设为星标 优质文章,及时送达 作者 | 墨颜  链接 | www.cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web基本上就是 ...

  10. 一文搞定cookie,session,token

    作者丨 墨颜 来源:cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间 ...

最新文章

  1. NOI2011 道路修建
  2. UVA 10601 Cubes
  3. mysql数据库读写操作_一看就会,MySQL数据库的基本操作(二)
  4. ubuntu之anaconda之编辑器
  5. android 不同项目代码合并在一块,android - 是否可以将两个(正在积极开发中的)Android应用程序模块合并到同一个Android Studio项目中? - 堆栈内存溢出...
  6. 计算机二级知识点速记,计算机等考《二级MS+Office高级应用》高频考点速记
  7. 有关linux信号汇总
  8. Visual SourceSafe使用流程指南
  9. 递归法:递归实现排列型
  10. 安装新硬盘-再次冲击Ubuntu之server篇
  11. h5故障代码_H5故障与内机有关?
  12. android compare方法,如何的CompareTo或在Android Studio中
  13. 算法入门电子资料《算法图解》+《我的第一本算法书》
  14. 数独高阶技巧之八——SDC
  15. 利用python编程实现音频剪辑
  16. 全国计算机三级网络技术题,全国计算机三级网络技术大题技巧
  17. SVN提交,报“remains in conflict”错误
  18. 计算机网络设备接地规范,网络机房防雷接地的四种方式及静电要求
  19. 第②波 | 纯福利,无套路资源分享~
  20. 功能覆盖率实验第二讲:coverage中at_leat用法

热门文章

  1. PHP iconv()函数转字符编码的问题(转)
  2. 《LeetCode力扣练习》第39题 组合总和 Java
  3. python时间序列分析航空旅人_时间序列分析-ARIMA模型(python)
  4. python中import cv2遇到的错误及安装方法_独家利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码amp;解析)...
  5. 数据增强_开源算法FMix:用于深度学习中增强混合样本数据增强
  6. 操作系统的进程状态变迁图_1.操作系统是干什么的?
  7. linux 磁盘扩容_当LINUX服务器磁盘空间不够时如何进行磁盘扩容?
  8. semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...
  9. python中tolist_python - 无法使用Gremlinpython使用“ .toList()”列出Janusgraph中存在的所有顶点 - 堆栈内存溢出...
  10. 文件服务器错误用友,用友U8.60用友服务器登陆不了,提示文件错误