token,session,cookie
通俗的来说就是暗号(一串字符串或者别的),这个暗号可以用来做很多事,最常做的是身份验证。
基于session的网站身份验证流程:(传统验证流程)
因为http协议是无状态的,用户在利用账号密码登陆验证后,后面的请求,服务器无法验证用户的身份,所以,在登陆后,服务器会给客户端发session(会过期),存在cookie里,客户端登陆后的请求都带有这个session,服务器校验session,如果通过,就返回相应信息。
基于token的身份验证流程:
token也一样。
- 客户端使用用户名跟密码请求登录
- 服务端收到请求,去验证用户名与密码
- 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
- 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
- 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
- 服务端收到请求,然后去验证客户端请求里面带着的 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相关推荐
- 【转】彻底理解cookie,session,token
转自:https://zhuanlan.zhihu.com/p/63061864 彻底理解cookie,session,token 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是 ...
- 【全栈接口测试进阶系列教程】精通api接口测试,接口分类,接口架构,http,webservice,dubbo接口协议,接口流程,接口工具,cookie,session,token接口鉴权原理以及实战
目录 一,[什么是接口测试?为什么要作接口测试] 1.接口的作用 2.为什么要做接口测试 3.接口都有哪些类型? 二,[接口测试的分类] 接口的分类: http和webservice接口区别: 三,[ ...
- 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token...
为什么你学不会递归?告别递归,谈谈我的一些经验 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! 可 ...
- equest,response,session,cookie,application
equest,response,session,cookie,application 觉得写的非常好..很齐全 A:request 客服端向服务器端请求 JAVA讲究封装,所以Request也是某个 ...
- 会话跟踪技术,Session和Cookie详解
知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文 ...
- 【网络通信与信息安全】之深入分析Token、session和cookie的使用场景和区别
在 Web 开发领域,相信大家对于 Cookie 和 Session 都很熟悉,Cookie 和 Session 都是会话保持技术的解决方案.随着技术的发展,Token 机制出现在我们面前,不过很多开 ...
- 一篇有关javaWeb的,有关转发,重定向,session,request域的综合小案例:验证码
**发一篇有关javaWeb的,有关转发,重定向,session,request域的综合小案例:验证码. 需求是: 1. 访问有验证码的登陆页面login.jsp 2. 用户输入用户名,密码以及验证码 ...
- 彻底理解cookie,session,token
点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:墨颜丶 cnblogs.com/moyand/p/9047978.html 发展史 1.很 ...
- 彻底理解 Cookie,Session,Token
点击上方视学算法,选择 设为星标 优质文章,及时送达 作者 | 墨颜 链接 | www.cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web基本上就是 ...
- 一文搞定cookie,session,token
作者丨 墨颜 来源:cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间 ...
最新文章
- NOI2011 道路修建
- UVA 10601 Cubes
- mysql数据库读写操作_一看就会,MySQL数据库的基本操作(二)
- ubuntu之anaconda之编辑器
- android 不同项目代码合并在一块,android - 是否可以将两个(正在积极开发中的)Android应用程序模块合并到同一个Android Studio项目中? - 堆栈内存溢出...
- 计算机二级知识点速记,计算机等考《二级MS+Office高级应用》高频考点速记
- 有关linux信号汇总
- Visual SourceSafe使用流程指南
- 递归法:递归实现排列型
- 安装新硬盘-再次冲击Ubuntu之server篇
- h5故障代码_H5故障与内机有关?
- android compare方法,如何的CompareTo或在Android Studio中
- 算法入门电子资料《算法图解》+《我的第一本算法书》
- 数独高阶技巧之八——SDC
- 利用python编程实现音频剪辑
- 全国计算机三级网络技术题,全国计算机三级网络技术大题技巧
- SVN提交,报“remains in conflict”错误
- 计算机网络设备接地规范,网络机房防雷接地的四种方式及静电要求
- 第②波 | 纯福利,无套路资源分享~
- 功能覆盖率实验第二讲:coverage中at_leat用法
热门文章
- PHP iconv()函数转字符编码的问题(转)
- 《LeetCode力扣练习》第39题 组合总和 Java
- python时间序列分析航空旅人_时间序列分析-ARIMA模型(python)
- python中import cv2遇到的错误及安装方法_独家利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码amp;解析)...
- 数据增强_开源算法FMix:用于深度学习中增强混合样本数据增强
- 操作系统的进程状态变迁图_1.操作系统是干什么的?
- linux 磁盘扩容_当LINUX服务器磁盘空间不够时如何进行磁盘扩容?
- semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...
- python中tolist_python - 无法使用Gremlinpython使用“ .toList()”列出Janusgraph中存在的所有顶点 - 堆栈内存溢出...
- 文件服务器错误用友,用友U8.60用友服务器登陆不了,提示文件错误