Java会话技术,拦截器,过滤器,登录校验
目录
1.会话:
2.会话跟踪:
3.会话跟踪方案:
客户端会话跟踪技术:Cookie
服务端会话跟踪技术:Session
JWT令牌技术(https://jwt.io/)
定义:
优点:
缺点:
组成:
一.会话技术
1.会话:
用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应
2.会话跟踪:
一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据
3.会话跟踪方案:
客户端会话跟踪技术:Cookie
优点:HTTP协议中支持的技术
缺点:移动端APP无法使用Cookie
不安全,用户可以自己禁用Cookie
Cookie不能跨域(跨域区分三个维度:协议,IP/域名,端口)
服务端会话跟踪技术:Session
优点:存储在服务端,安全
缺点:服务端集群环境下无法直接使用Session
Cookie的缺点
JWT令牌技术(https://jwt.io/)
定义:
定义了一种简洁的,自包含的格式,用于在通信双方以json数据格式安全的传输信息,由于数字签名的存在,这些信息是可靠的
优点:
支持PC端,移动端
解决集群环境下的认证问题
减轻服务器端存储压力
缺点:
自己实现
组成:
第一部分:Header(头),记录令牌类型,签名算法等。例如:{"alg":"HS256","type":"JWT"}
第二部分:Payload(有效载荷),携带一些自定义信息,默认信息。例如:{"id":"1","username":"Tom"}
第三部分:Signature(签名),防止Token被篡改,确保安全性。将header,payload,并加入指定密钥,通过指定签名算法计算而来。

场景:登录认证
1.登录后,生成令牌
2.后续每个请求都要携带JWT令牌,系统在每次请求处理之前,先校验令牌,通过后,在处理
生成令牌:
@Testvoid test1(){Map<String, Object> claims=new HashMap<>();claims.put("id",1);claims.put("username","Tom");String ito = Jwts.builder().setClaims(claims)//自定义内容(载荷).signWith(SignatureAlgorithm.HS256,"iejifalkdlajiwejakldsjfioefjslkdjklfjeiroekls")//签名算法.setExpiration(new Date(System.currentTimeMillis() + 12 * 3600 * 1000))//有效期.compact();System.out.println(ito);}}
注意!!!:签名算法使用Base64编码字符串长度至少为43位

解析令牌

二.过滤器
概念:
Filter过滤器,是javaweb三大组件(Servlet,Filter,Listener)之一。
过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
过滤器一般完成一些通用的操作,比如:登录校验,统一编码处理,敏感字符处理。

快速入门:

过滤器链
介绍:一个web应用中,可以配置多个过滤器,这多个过滤器形成一个过滤链
顺序:注解配置的Filter,优先级是按照过滤器类名(字符串)的自然排序。

三.拦截器
概念:
是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。
作用:
拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。
步骤:
1.定义拦截器,实现HandlerInterceptor接口,并重写其所有方法。
2.注册拦截器

拦截器可以根据需求,配置不同的拦截路径
| 拦截路径 | 含义 | 举例 |
|---|---|---|
| /** | 一级路径 | 能匹配/depts,/emps,login,不能匹配/depts/1 |
| /** | 任意级路径 | 能匹配/depts,/depts/1,/depts/1/2 |
| /depts/* | /depts下的一级路径 | 能匹配/depts/1,不能匹配/depts/1/2,/depts |
| /depts/** | /depts下的任意路径 | 能匹配/depts,/depts/1,depts/1/2,不能匹配/emps/1 |
拦截器执行流程:
拦截器与过滤器的区别
1.接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterception接口
2.拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截Spring环境中的资源
四.登录校验
步骤:
1.获取请求url
2.判断请求url中是否包含login,如果包含,说明是登录操作,放行
3.获取请求头中的令牌(token)
4.判断令牌是否存在,如果不存在,返回错误结果(未登录)
5.解析token,如果解析失败,返回错误结果(未登录)
6.放行
相关文章:
Java会话技术,拦截器,过滤器,登录校验
目录 1.会话: 2.会话跟踪: 3.会话跟踪方案: 客户端会话跟踪技术:Cookie 服务端会话跟踪技术:Session JWT令牌技术(https://jwt.io/) 定义: 优点: 缺点: 组成: …...
Spring Security 如何进行权限验证
阅读本文之前,请投票支持这款 全新设计的脚手架 ,让 Java 再次伟大! FilterSecurityInterceptor FilterSecurityInterceptor 是负责权限验证的过滤器。一般来说,权限验证是一系列业务逻辑处理完成以后,最后需要解决的…...
计算机砖头书的学习建议
纸上得来终觉浅,绝知此事要躬行,技术来源于实践,光看不练意义不大,过阵子全忘记,并且没有实践来深化理论认知。 “砖头书”通常指的是那些厚重、内容详实且权威的书籍,对于计算机科学领域而言,…...
我与C语言二周目邂逅vlog——7.预处理
C语言预处理详解 C语言预处理是编译过程中的重要组成部分,用于对源代码进行文本替换和修改。预处理发生在编译的前期,通过特定的指令来控制代码的编译行为,最终生成可以交给编译器进行进一步处理的代码。预处理的目的是简化代码编写…...
Python无监督学习中的聚类:K均值与层次聚类实现详解
📘 Python无监督学习中的聚类:K均值与层次聚类实现详解 无监督学习是一类强大的算法,能够在没有标签的数据集中发现结构与模式。聚类作为无监督学习的重要组成部分,在各类数据分析任务中广泛应用。本文将深入讲解聚类算法中的两种…...
C++ 中 new 和 delete 详解,以及与 C 中 malloc 和 free 的区别
1. C 中 new 和 delete 的基本用法 在 C 中,new 和 delete 是用来动态分配和释放内存的关键字,它们是面向对象的替代方式,提供了比 C 语言更优雅的内存管理工具。 1.1 new 的使用 new 用于从堆中分配内存,并且自动调用对象的构造…...
YOLOv11来了 | 自定义目标检测
概述 YOLO11 在 2024 年 9 月 27 日的 YOLO Vision 2024 活动中宣布:https://www.youtube.com/watch?vrfI5vOo3-_A。 YOLO11 是 Ultralytics YOLO 系列的最新版本,结合了尖端的准确性、速度和效率,用于目标检测、分割、分类、定向边界框和…...
Vue3 集成Monaco Editor编辑器
Vue3 集成Monaco Editor编辑器 1. 安装依赖2. 使用3. 效果 Monaco Editor (官方链接 https://microsoft.github.io/monaco-editor/)是一个由微软开发的功能强大的在线代码编辑器,被广泛应用于各种 Web 开发场景中。以下是对 Monaco Editor 的…...
一文详解Mysql索引
背景 索引是存储引擎用于快速找到一条记录的数据结构。索引对良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。接下来,就来详细探索一下索引。 索引是什么 索引(Index)是帮助数据库高效获取数据的…...
基于JAVA+SpringBoot+Vue的旅游管理系统
基于JAVASpringBootVue的旅游管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄…...
STM32_实验3_控制RGB灯
HAL_Delay 是 STM32 HAL 库中的一个函数,用于在程序中产生一个指定时间的延迟。这个函数是基于系统滴答定时器(SysTick)来实现的,因此可以实现毫秒级的延迟。 void HAL_Delay(uint32_t Delay); 配置引脚: 点击 1 到 IO…...
RISC-V笔记——Pipeline依赖
1. 前言 RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Pipeline Dependencies(Pipeline依赖)。 2. Pipeline依赖 Pipeline依赖指的是&a…...
构建后端为etcd的CoreDNS的容器集群(六)、编写自动维护域名记录的代码脚本
本文为系列测试文章,拟基于自签名证书认证的etcd容器来构建coredns域名解析系统。 一、前置文章 构建后端为etcd的CoreDNS的容器集群(一)、生成自签名证书 构建后端为etcd的CoreDNS的容器集群(二)、下载最新的etcd容…...
Leetcode 剑指 Offer II 098.不同路径
题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下…...
LabVIEW智能螺杆空压机测试系统
基于LabVIEW软件开发的螺杆空压机测试系统利用虚拟仪器技术进行空压机的性能测试和监控。系统能够实现对螺杆空压机关键性能参数如压力、温度、流量、转速及功率的实时采集与分析,有效提高测试效率与准确性,同时减少人工操作,提升安全性。 项…...
在 Ubuntu 22.04 上安装 PHP 8.2
在 Ubuntu 22.04 上安装 PHP 8.2,可以按照以下步骤进行: 更新系统软件包: 首先,确保你的系统软件包是最新的。 sudo apt update sudo apt upgrade 安装 PHP PPA(Personal Package Archive): U…...
Java生死簿管理小系统(简单实现)
学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…...
【VoceChat】一个即时聊天(IM)软件,又是一个可以嵌入任何网页聊天系统
为什么要搭建私人聊天软件 在当今数字化时代,聊天软件已经成为人们日常沟通和协作的重要工具。市面上的公共聊天平台虽然方便,但也伴随着诸多隐私、安全、广告和功能限制的问题。对于那些注重数据安全、追求高效沟通的个人或团队来说,搭建一…...
【LeetCode】动态规划—96. 不同的二叉搜索树(附完整Python/C++代码)
动态规划—96. 不同的二叉搜索树 题目描述前言基本思路1. 问题定义2. 理解问题和递推关系二叉搜索树的性质:核心思路:状态定义:状态转移方程:边界条件: 3. 解决方法动态规划方法:伪代码: 4. 进一…...
Nginx UI 一个可以管理Nginx的图形化界面工具
Nginx UI 是一个基于 Web 的图形界面管理工具,支持对 Nginx 的各项配置和状态进行直观的操作和监控。 Nginx UI 的功能非常丰富: 在线查看服务器 CPU、内存、系统负载、磁盘使用率等指标 在线 ChatGPT 助理 一键申请和自动续签 Let’s encrypt 证书 在…...
消息队列5-RabbitMQ的高级特性和MQ的应用问题与解决方案-事务、消息分发的应用、幂等性保证、顺序性保证、消息积压的解决
文章目录一. 事务1. 模版开启事务功能2. 配置事务管理器3. 声明队列4. 生产者5. 运行图二. 消息分发1. 限流(1) yml配置文件(2) 声明队列与交换机及绑定关系(3) 生产者(4) 消费者(5) 运行图2. 负载均衡(1) yml配置(2) 消费者代码(3) 运行图三. MQ的幂等性保证1. MQ中存在的问题…...
塞尔达存档定制工具:解锁海拉鲁冒险的无限可能
塞尔达存档定制工具:解锁海拉鲁冒险的无限可能 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 在海拉鲁大陆的冒险旅程中,每个玩家都曾面临…...
华硕笔记本合盖不休眠解决方案:GHelper智能模式完全指南
华硕笔记本合盖不休眠解决方案:GHelper智能模式完全指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …...
颠覆式配置革命:OpCore-Simplify让黑苹果爱好者效率提升83%的智能工具
颠覆式配置革命:OpCore-Simplify让黑苹果爱好者效率提升83%的智能工具 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你在凌晨三点对着…...
每日一问-20260405--戴尔显示器型号命名速查表
戴尔显示器型号命名速查表(超清晰版)看完这张表,以后任何戴尔显示器,看一眼型号就知道定位、尺寸、年份、功能。一、整体结构格式:系列 尺寸 年份 后缀例:SE 24 16 H 入门家用系列 24 英寸 2016 年款 …...
【软考高级】系统架构设计师核心考点精讲与实战应用
1. 系统架构设计师考试概述 系统架构设计师是软考高级资格认证中的一项重要考试,主要面向从事系统架构设计、技术选型和项目管理的专业人员。这个认证不仅考察理论知识,更注重实际架构设计能力的评估。考试分为综合知识、案例分析和论文三个部分…...
2026届毕业生推荐的五大降AI率网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 从以下方面着手,能够降低AIGC(人工智能生成内容)的检测特…...
如何用GetQzonehistory永久备份你的QQ空间回忆?三步轻松搞定
如何用GetQzonehistory永久备份你的QQ空间回忆?三步轻松搞定 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心多年积累的QQ空间说说、照片和评论会随着时间流逝而消…...
SEO_详解SEO优化中站内与站外优化的区别
SEO优化中站内与站外优化的区别详解 在当今的网络世界,SEO(搜索引擎优化)是每一个网站主人都必须掌握的技能。SEO优化主要分为站内优化和站外优化,两者在策略和目标上有着显著的区别。本文将详细解析这两者的区别,并为…...
运算放大器基础:从符号到负反馈的实战解析
1. 运算放大器基础认知 第一次接触运算放大器时,我盯着电路板上那个小小的三角形符号发愣——这玩意儿凭什么能同时处理比较和放大两种任务?后来才发现,它的强大之处恰恰藏在最简单的符号里。运放的符号主体是个三角形,五个关键引…...
