接口的鉴权cookie、session和token
1、HTTP是无状态协议
什么是无状态?就是说这一次的请求和上一次的请求是没有任何关系的,无法共享信息。好处就是速度快。
2、cookie、session的加入
HTTP请求是无状态的,所以解决共享信息的问题必须采用其他的手段,于是就有了sessionid,sessionid是基于cookie实现的。服务器为每一个用户生成一个不一样的随机字符串,每次向服务器发起HTTP请求时,都会把这个字符串传给服务器,这样就能区分用户了。
3、session的缺点
对于客户端来说session是非常好的,只需要cookie中存一个字符串就好了,但对于服务器来说,必须存储所有在线用户的session,那么这就占用了很大的资源(cpu,内存),严重影响服务器的性能。这时可以选择去扩展服务器做集群,但是同时也出现了分布式session的问题,那么可以采用session粘滞或者session集中式管理(redis)来解决。
session原理图:
纯手工画图,不喜勿喷

4、cookie、session的区别
cookie:客户端和服务端都能生成cookie,存放在客户端。存放一些不敏感的数据,数据类型只能是字符串(json).
session:服务端生成session,存放在服务端。可以存放任意数据,Java中session中可以存放任意对象,session必须依赖cookie实现。
5、token 票据的意思,就是门票、令牌
token也是一个字符串,用户输入用户名和密码之后,向服务器发起请求,服务器会生成一个token串,token串是由header+userid+时间戳,在经过一个加密的算法,生成一个token字符串。
token验证原理图:(偷的图,哈哈)

session和token的区别:
session:服务器生成、存储、验证,以cookie的方式传给客户端,客户端以同样的方式发送给服务端。session有状态。
token:服务器生成、验证,以cookie或者请求头的形式传给客户端,客户端以同样的方式发送给服务器,token无状态。
接口的鉴权cookie、session和token的更多相关文章
- Spring Security 接口认证鉴权入门实践指南
目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...
- YAPI接口自动鉴权功能部署详解
安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境. 无论是选择在线安装或者是本地安装,都需要安装client工具. 1.yapi-cli:npm install yap ...
- Cookie Session 与Token
由于HTTP是一种无状态的协议,服务器端无法知道用户与客户端交互的状态,比如如果一个用于之前已经访问过该服务器,服务器无法知道该用户是第二次访问,Session和Cookie都是用来保存用户与后端服务 ...
- 接口的鉴权&响应数据解密
前言: 1.开放的接口为了避免被别人攻击,频繁刷接口,浪费服务器资源,这就涉及到签名(Signature)加密了 2.API 使用签名方法(Signature)对接口进行鉴权(Authenticati ...
- 存储机制 cookie session jwt token
cookieCookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网 ...
- Cookie.Session到Token和JWT
一.session和cookie: 现在一般都是session和cookie一起用,一起提.但是他们俩其实不是一定要在一起. session的产生原因是,http协议是无状态的 这就导致了,不同的用户 ...
- EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解
背景需求 EasyNVR的使用者应该都清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可以 ...
- 接口鉴权之sign签名校验与JWT验证
需求描述: 项目里的几个Webapi接口需要进行鉴权,同接口可被小程序或网页调用,小程序里没有用户登录的概念,网页里有用户登录的概念,对于调用方来源是小程序的情况下进行放权,其他情况下需要有身份验证. ...
- cookie,session和token的概念以及区别
cookie: 采用客户端保存状态的方案: cookie的组成:名字,值过去时间,路径以及域: 没有设置时间:随着浏览器的打开和关闭决定: 设置了时间:浏览器就会把cookie保存在硬盘上,根据时间来 ...
随机推荐
- 某邀请赛misc key阉割发行版
目录 题目下载 提示 解题过程 1.提取RGB值 2.找到key 3.循环异或,得到flag 反思 题目下载 题目名:key 提示 提取钥匙中特殊颜色的RGB循环异或KEY值 解题过程 1.提取RGB ...
- CandyCrush 糖果传奇源码+素材+教程
在这里你将深入学习C#语言和Unity开发游戏的技术.在游戏项目开发中深入学习并掌握Unity开发中的刚体,模型等等 共14讲,TS格式,大小395MB 共14讲,TS格式,大小395MB 扫码时备注 ...
- 高通平台sensor框架图【学习笔记】
- Base64编码解码(js)
开源的base64.js,使用很简单,浏览器引入该JS文件,然后Base64编码这样: Base64.encode('china is so nb'); // 编码 "Y2hpbmEgaXM ...
- SNF快速开发平台2019-用户安全控制-权限管理模型实践-权限都在这里
1.1 是否保存密码 勾选记住密码后,再次开启程序用户密码不需要再次输入,直接显示在密码输入框内,方便快捷. 图 4.1‑1 记住密码的登录页面框 1.2 是否自动登录 勾选自动登录后,再 ...
- [转]C/C++实现回调机制的几种方式(回调、槽、代理)
转自:https://www.jianshu.com/p/4f907bba6d5f (1)Callback方式(回调) Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该 ...
- spring cloud java: 无法访问redis.clients.jedis.JedisPoolConfig 找不到redis.clients.jedis.JedisPoolConfig的类文件
spring cloud <spring-cloud.version>Greenwich.SR3</spring-cloud.version> 注入Redis 时候: @Bea ...
- Java实现 微信小程序 + 消息推送
实现效果: 下面要显示五个字段 接下来,参照官方文档,一步步实现: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open- ...
- php对数组遍历的两种方式示例
在对 php 数组遍历时,一般经常使用 foreach 来遍历,很少用 while 来遍历,在下面的代码中作一个对比. <?php $content = ["ID" => ...
- 容器服务如何在企业客户落地?Rancher 解决之道分享
Docker 的优势和趋势我想不必再赘述,那么对于非互联网公司的传统企业客户,以及我们大量的围绕企业客户做集成.交付解决方案的服务提供商,需要考虑的一个问题就是怎么样把容器技术以高质量.低成本.易维护 ...