基于session的验证方式和Token验证方式的区别,以及JWT的具体实现流程

2023-10-27

1、传统的cookie认证过程

长期以来,基于Session的认证(Session based authentication)一直处于主流地位。由于http协议是无状态的,借助cookie,客户端登陆成功后,服务端就能识别其后续请求,而不需要每次都登陆。它是有状态的(statefull),也就是服务端和客户端都需要保存生成的session,也就是说在服务端需要在数据库中追踪session是否alive,客户端要把session写入cookie中。基本过程如下:
在这里插入图片描述

  • 客户端登陆,一般输入用户名和密码
  • 服务端如果验证通过,就会生成session,并把它存入数据库中
  • 客户端在浏览器上会产生cookie,并把session_id写入
  • 客户端后续有新的请求,都会在请求后携带sessIon_id,发给服务端
  • 如果客户端登陆出去(log out),该生成的session就会在服务端都被销毁,session_id在客户端也会被清除

基于Token 认证和session 认证的比较
基于Session的认证方式

那么这样做有什么问题呢?

  1. 服务端需要保存每个用户的session,这对于很多访问用户的情景来说,服务端的负担很重,需要大量的的资源来存储session
  2. 另一方面不能很好解决跨域资源共享问题Cross-Origin Resource Sharing (CORS)
  3. cookie存储在客户端或者浏览器引入了很多不安全因素,招致了很多专门针对cookie的攻击如上面这个攻击,在Java Guide中有详细的举例描述:JWT 身份认证优缺点分析以及常见问题解决方案
  4. 这个链接中也谈了很多Session的相关缺点:如何理解HTTP的“无连接”和“无状态”

2、Token的认证方式

为了解决以上的问题,我们引入了Token的技术来解决登录验证与用户的状态记录等信息:
15分钟详解 Python 安全认证的那些事儿

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于session的验证方式和Token验证方式的区别,以及JWT的具体实现流程 的相关文章

  • Java语言中的重写(override)和重载(overload)

    Java语言中的重写 override 和重载 overload 重写 override 和重载 overload 是编程语言中的两个常见概念 用于描述函数或方法的特定行为 重写指的是在子类中重新定义 覆盖 父类中已经存在的同名方法 重写可
  • Jdk下载和安装

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 下载JDK 二 安装JDK 三 配置环境 四 检验安装 前言 学习java第一步 写java文件都需要配置java环境 提示 以下是本篇文章正文内容 下面
  • java中的循环

    java中的循环有四种 循环由四部分组成 1 初始部分 循环判断的变量 2 循环条件 布尔表达式 3 循环操作 循环执行的代码 4 迭代部分 更新循环变量 1 while循环 while的特点 首次判断不满足 则一次都不会执行 先判断 再执
  • java基本语法 上

    目录 关键字与保留字 关键字 keyword 的定义和特点 保留字 标识符 Java中的名称命名规范 变量 变量的定义 变量的分类 整数类型 byte short int long 浮点类型 float double 字符类型 char 布
  • eclipse运行程序时只有run on server

    最近写jsp的程序比较多 写java程序时 发现一点击运行按钮就开始启动服务器了 这是因为没有写主函数的原因 注意这个问题
  • idea运行项目报错Cannot run program “C:\Program Files\Java\jdk1.8.0_121\bin\java.exe......解决办法

    在环境变量都配置完好的情况下 基本就是idea的配置除了问题可以检查以下几点 1 SDKs检查 2 路径检查 3 项目配置检查
  • leetcode刷题(3)

    各位朋友们大家好 今天是我leedcode刷题系列的第三篇 废话不多说 直接进入主题 文章目录 分割链表 题目要求 用例输入 提示 做题思路 c语言代码实现 Java代码实现 相交链表 题目要求 用例输入 提示 做题思路 c语言实现代码 J
  • 解决jar包启动关闭窗口后停止项目问题

    项目以jar形式部署到服务器 通常会以这样的形式 java jar zpw 2 2 5 RELEASE jar 问题 当我们一关闭当前窗口就会停止运行项目 解决思路 在后台运行 解决方法 nohup java jar zpw 2 2 5 R
  • MongoDB图形化工具的使用与java操作

    MongoDB图形化工具的使用与java操作 MongoDB Compass Community 下载 安装 使用 介绍 MongoDB概念 新建数据库 删除数据库 新建集合 删除集合 新增文档 删除文档 修改文档 查询文档 Java操作m
  • HashMap的使用

    put方法 Hashmap的put方法放值 可以单次向HashMap中添加一个键值对 没有顺序 HashMap
  • java中的基本数据类型和引用数据类型以及它们的存储方式堆内存和栈内存

    一直对java中的基本数据类型和引用数据类型之间的关系搞不太清楚 今天做leetcode的一道题目 总算弄清楚了关系 写下来和大家一起分享一下 一 基本数据类型 数据类型在计算机语言里面 是对内存位置的一个抽象表达方式 可以理解为针对内存的
  • JetBrains全家桶(IDEA、Pycharm等各个产品)在国内高速下载地址

    JetBrains产品在国内有CDN下载通道 下面给出各个产品的下载链接 在某些情况下 官网无法访问 可以使用下面的链接直接下载 只需要照模样修改后缀名和年份版本号即可 操作系统后缀 Win exe 安装版 Win win zip 解压版
  • 《Thinking in Java》——构造器是private时如何创建对象?

    构造器是private时如何创建对象 可以通过static成员进行创建 如 class A private A 构造器是private修饰 不能在本类外通过new A 创建对象 public static A construct retur
  • Java练习代码(五)- 线程

    package Java2021 4 8 import sun util resources ms CalendarData ms MY Create with IntelliJ IDEA Description Auther HMW Da
  • List接口不是很详细的介绍

    文章目录 前言 一 List是什么 1 1 List概述 1 2 常用API 带有Index 都是List新增方法 1 3 List用法 二 常见实用类 2 1 ArrayList与Vector 2 2 ArrayList与LinkedLi
  • Java数字字符串的判断与转换

    文章目录 引言 一 判断字符串是否为数字 1 1 第三方包StringUtils isNumeric 1 2 Java自带方法Character isDigit 1 3 正则表达式 二 将字符串转化为数字 2 1 整数 2 2 小数 参考
  • java常见面试题及答案 11-20(JVM)

    11 JVM内存分哪几个区 每个区的作用是什么 java虚拟机主要分为以下一个区 方法区 1 有时候也成为永久代 在该区内很少发生垃圾回收 但是并不代表不发生GC 在这里进行的GC主要是对方法区里的常量池和对类型的卸载 2 方法区主要用来存
  • 关于ArithmeticException 异常捕获(double类型的数据除于0为什么是无穷大?)

    关于ArithmeticException 异常捕获 double类型的数据除于0为什么是无穷大 在做实验编写应用程序 从命令行中输入表示两个小数的参数的字符串 求它们的商 要求程序捕获NumberFormatException异常和Ari
  • 如何遍历一个栈而且保持原栈不动

    用Iterator public static void printStack Stack
  • 1005. K 次取反后最大化的数组和 && 增强for循环(foreach循环)遍历数组

    1005 K 次取反后最大化的数组和 原题链接 完成情况 解题思路 参考代码 1005K次取反后最大化的数组和 1005K次取反后最大化的数组和 简洁写法 错误经验吸取 增强for循环 foreach循环 遍历数

随机推荐

  • 接入谷歌AdSense后浏览器控制台报错:Failed to load resource: the server responded with a status of 403的原因及解决办法、

    本篇文章主要讲解 接入谷歌AdSense后浏览器控制台报错 Failed to load resource the server responded with a status of 403 ads 的原因及解决办法 日期 2023年6月1
  • 掌优电子刷脸支付未来可期

    据 重庆商报 报道 近日 由广州某科技公司自主研发的两款比邻星系列红外活体相机以及核心算法 正式通过金融行业的国家级权威性检测机构 银行卡检测中心 以下简称BCTC 的严格技术检测 成为目前全国唯一过检BCTC的红外双目相机 其活体检测性能
  • 单例模式---Java实现

    单例模式涉及到一个单一的类 该类负责创建自己的对象 同时确保只有单个对象被创建 这个类提供了一种访问其唯一的对象的方式 可以直接访问 不需要实例化该类的对象 注意 1 单例类只能有一个实例 2 单例类必须自己创建自己的唯一实例 3 单例类必
  • Keil编辑和STM32cubemx配置STM32控制步进电机

    使用Keil ARM V5 IDE编程和STM32CUBEMX代码配置实现STM32F103和步进电机驱动器模块A4988控制步进电机 Keil和Stm32cubemx 安装 安装Keil IDE非常简单 下载包含Keil IDE的MDK
  • 基于UmiJs开发移动端的自适应配置方案

    在移动端开发过程中 响应式布局是必须要考虑的一个问题 基于UmiJs开发时 使用的组件库是antd mobile 通过在 umirc js中添加配置项 及可以通过对于的postCss插件postcss px to viewport解决响应式
  • 转载 十分钟理解Actor模式

    Actor模式是一种并发模型 与另一种模型共享内存完全相反 Actor模型share nothing 所有的线程 或进程 通过消息传递的方式进行合作 这些线程 或进程 称为Actor 共享内存更适合单机多核的并发编程 而且共享带来的问题很多
  • 【C++】哈希和unordered系列封装

    1 哈希 1 1 哈希概念 顺序结构以及平衡树中 元素关键码与其存储位置之间没有对应的关系 因此在查找一个元素时 必须要经过关键码的多次比较 顺序查找时间复杂度为O N 平衡树中为树的高度 即O l o g 2 N
  • XMind 各版本官网下载地址

    本博文为备份用 所有链接皆为官网地址 请勿无耻举报 本文仅为软件备份用 方便大家下载官方原装软件 以下版本皆非最新版本 仅备份未列于官网上的软件 其他软件自行去这里下载 http www xmind net download previou
  • 解决Error L6218E Undefined symbol XXX....问题

    分享一个keil的错误编译提示以及其问题解决方法 当我们碰到 Error L6218E Undefined symbol XXX 这个错误提示 其实出现这问题的原因就是我们调用了没有定义的函数 就比如你把一个函数定义注释了 然后却在程序调用
  • Arduino STM32F103C8T6(BluePill) 教程六 STM32 IO操作(LED灯蜂鸣器继电器ADC/PWM)

    Arduino STM32F103C8T6 BluePill 教程六 STM32 IO操作 LED灯蜂鸣器继电器ADC PWM 1 IO操作的 pinMode 函数 形式 void pinMode uint8 pin WiringPinMo
  • eNSP入门介绍(超级超级详细!!!)

    Ensp Enterprise Network Simulation Platform 是华为提供的一款网络仿真平台 主要用于学习 实践和测试企业网络场景 Ensp可以模拟各种网络设备 如交换机 路由器 防火墙等 创建以太网 无线网络等多种
  • COLMAP稀疏重建得图像内外参文件

    前言 一 DTU数据集 二 COLMAP操作步骤 1 安装COLMAP 2 COLMA稀疏重建 总结 前言 整个流程是 第一节用COLMAP求出DTU训练数据集内外参数 第二节处理COLMAP得到的images txt文件中外参 一 DTU
  • listview添加数据_ListView 使用详解

    和你一起终身学习 这里是程序员Android 经典好文推荐 通过阅读本文 您将收获以下知识点 一 ListView 简介二 ListView 常用属性三 ListView主要使用方法如下四 使用android entries 为ListVi
  • 用set_series_opts在PyEcharts中实现系列配置

    全局配置项可通过 set global opts 方法设置 笔记仅是个人的学习笔记总结 如有雷同请见谅 系列配置顶 用法 1 先创建数据 from pyecharts charts import Bar from pyecharts fak
  • 开启XP远程桌面的网络级身份验证(NLA)模式

    indows XP SP3下不支持网络级别身份验证 而Vista Windows 7则支持 那么 何谓网络级身份验证呢 网络级别身份验证 NLA Network Level Authentication 是一种新的身份验证方法 在你建立远程
  • YOLOV3实战6:显示中文标签(YOLOV3中文标签)

    一 番外说明 大家好 我是小P 今天在此给大家分享一下基于DarknetAB版本的YOLOV3如何生成和显示中文标签的方法 效果如下图所示 希望大家支持和喜欢 此外 对 目标检测 模型压缩 语义分割 感兴趣的小伙伴 欢迎加入QQ群 8132
  • openwrt在7620A上对fat格式U盘的支持

    openwrt刷好的固件 在7620a上运行时 可以看到设备节点 但是mount一直提示codepage cp437 not found make menuconfig发现 确实对cp437没有选 路径在Kernel modules gt
  • Swift5.X版本StoreKit原生内购

    内购是移动端一值在讨论的话题 每次上架内购功能要做好被拒的准备 小萌在2年前也做过内购 是OC版本 回想那段往事一把血泪呀 被拒了无数次才把内购功能送上AppStore 小萌之前的OC内购 中间也经历了不少的困难 详情请看苹果内购审核那些被
  • stc单片机使用外部中断+EC11编码器实现计数功能

    stc单片机使用外部中断 EC11编码器实现计数功能 相关篇 STC15 8单片机特有的PWM寄存器和普通定时器实现PWM输出 串口输出测试效果 EC11编码器原理图 EC11编码器输出信号说明 检测说明 以EC11 A信号作为一个时钟基准
  • 基于session的验证方式和Token验证方式的区别,以及JWT的具体实现流程

    1 传统的cookie认证过程 长期以来 基于Session的认证 Session based authentication 一直处于主流地位 由于http协议是无状态的 借助cookie 客户端登陆成功后 服务端就能识别其后续请求 而不需