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的更多相关文章

  1. Spring Security 接口认证鉴权入门实践指南

    目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...

  2. YAPI接口自动鉴权功能部署详解

    安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境. 无论是选择在线安装或者是本地安装,都需要安装client工具. 1.yapi-cli:npm install yap ...

  3. Cookie Session 与Token

    由于HTTP是一种无状态的协议,服务器端无法知道用户与客户端交互的状态,比如如果一个用于之前已经访问过该服务器,服务器无法知道该用户是第二次访问,Session和Cookie都是用来保存用户与后端服务 ...

  4. 接口的鉴权&响应数据解密

    前言: 1.开放的接口为了避免被别人攻击,频繁刷接口,浪费服务器资源,这就涉及到签名(Signature)加密了 2.API 使用签名方法(Signature)对接口进行鉴权(Authenticati ...

  5. 存储机制 cookie session jwt token

    cookieCookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网 ...

  6. Cookie.Session到Token和JWT

    一.session和cookie: 现在一般都是session和cookie一起用,一起提.但是他们俩其实不是一定要在一起. session的产生原因是,http协议是无状态的 这就导致了,不同的用户 ...

  7. EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解

    背景需求 EasyNVR的使用者应该都清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可以 ...

  8. 接口鉴权之sign签名校验与JWT验证

    需求描述: 项目里的几个Webapi接口需要进行鉴权,同接口可被小程序或网页调用,小程序里没有用户登录的概念,网页里有用户登录的概念,对于调用方来源是小程序的情况下进行放权,其他情况下需要有身份验证. ...

  9. cookie,session和token的概念以及区别

    cookie: 采用客户端保存状态的方案: cookie的组成:名字,值过去时间,路径以及域: 没有设置时间:随着浏览器的打开和关闭决定: 设置了时间:浏览器就会把cookie保存在硬盘上,根据时间来 ...

随机推荐

  1. 【Gamma阶段】第二次Scrum Meeting

    冰多多团队-Gamma阶段第二次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 卓培锦 修改可移动button以及button手感反馈优化 编辑器风格切换(夜间模式) 牛雅哲 语音输入sh ...

  2. mstar gdb调试

    当进程崩溃出现coredump提示时,可以利用gdb来定位出错函数. 首先,把core_dump.XXX.gz文件从设备上拷贝出来,放到编译环境下,另外,还要把代码目录下的symbols文件夹也拷贝到 ...

  3. 【Node.js】Node.js的安装

    Node.js的简介 简单的说,Node.js 是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件 ...

  4. 如何将业务代码写得像诗一样(使用注解+单例+工厂去掉一大波if和else判断)

    1.订单控制器,提供一个根据商品id和银行渠道id计算商品折后价格的接口: import org.springframework.web.bind.annotation.GetMapping; imp ...

  5. Python3基础 内置函数 dir 查询对象的方法列表

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  6. 【iCore4 双核心板_FPGA】实验二十:NIOS II之UART串口通信实验

    实验指导书及源代码下载地址: 链接:https://pan.baidu.com/s/1g_tWYYJxh4EgiGvlfkVu1Q 提取码:dwwa 复制这段内容后打开百度网盘手机App,操作更方便哦 ...

  7. 在centos7上用docker安装宝塔面板

    在centos7上用docker安装宝塔面板   1. [root@web01 ~]# systemctl enable docker 2. [root@web01 ~]# docker pull c ...

  8. cheerio 服务器端的jquery

    cheerio https://cheerio.js.org/ Fast, flexible, and lean implementation of core jQuery designed spec ...

  9. python获取文件路径

    摘自:https://blog.csdn.net/Poo_Chai/article/details/89764001 import os root_path = os.path.abspath(os. ...

  10. Pan wutong团队技术支持

    本网页为Pan wutong团队的技术支持网址,如果在我们开发的游戏中遇到任何问题,欢迎联系我们! QQ:2535510006 邮箱:2535510006@qq.com