当前位置: 首页 > news >正文

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.会话&#xff1a; 2.会话跟踪&#xff1a; 3.会话跟踪方案&#xff1a; 客户端会话跟踪技术&#xff1a;Cookie 服务端会话跟踪技术&#xff1a;Session JWT令牌技术(https://jwt.io/) 定义&#xff1a; 优点&#xff1a; 缺点&#xff1a; 组成&#xff1a; …...

Spring Security 如何进行权限验证

阅读本文之前&#xff0c;请投票支持这款 全新设计的脚手架 &#xff0c;让 Java 再次伟大&#xff01; FilterSecurityInterceptor FilterSecurityInterceptor 是负责权限验证的过滤器。一般来说&#xff0c;权限验证是一系列业务逻辑处理完成以后&#xff0c;最后需要解决的…...

计算机砖头书的学习建议

纸上得来终觉浅&#xff0c;绝知此事要躬行&#xff0c;技术来源于实践&#xff0c;光看不练意义不大&#xff0c;过阵子全忘记&#xff0c;并且没有实践来深化理论认知。 “砖头书”通常指的是那些厚重、内容详实且权威的书籍&#xff0c;对于计算机科学领域而言&#xff0c;…...

我与C语言二周目邂逅vlog——7.预处理

C语言预处理详解 C语言预处理是编译过程中的重要组成部分&#xff0c;用于对源代码进行文本替换和修改。预处理发生在编译的前期&#xff0c;通过特定的指令来控制代码的编译行为&#xff0c;最终生成可以交给编译器进行进一步处理的代码。预处理的目的是简化代码编写&#xf…...

Python无监督学习中的聚类:K均值与层次聚类实现详解

&#x1f4d8; Python无监督学习中的聚类&#xff1a;K均值与层次聚类实现详解 无监督学习是一类强大的算法&#xff0c;能够在没有标签的数据集中发现结构与模式。聚类作为无监督学习的重要组成部分&#xff0c;在各类数据分析任务中广泛应用。本文将深入讲解聚类算法中的两种…...

C++ 中 new 和 delete 详解,以及与 C 中 malloc 和 free 的区别

1. C 中 new 和 delete 的基本用法 在 C 中&#xff0c;new 和 delete 是用来动态分配和释放内存的关键字&#xff0c;它们是面向对象的替代方式&#xff0c;提供了比 C 语言更优雅的内存管理工具。 1.1 new 的使用 new 用于从堆中分配内存&#xff0c;并且自动调用对象的构造…...

YOLOv11来了 | 自定义目标检测

概述 YOLO11 在 2024 年 9 月 27 日的 YOLO Vision 2024 活动中宣布&#xff1a;https://www.youtube.com/watch?vrfI5vOo3-_A。 YOLO11 是 Ultralytics YOLO 系列的最新版本&#xff0c;结合了尖端的准确性、速度和效率&#xff0c;用于目标检测、分割、分类、定向边界框和…...

Vue3 集成Monaco Editor编辑器

Vue3 集成Monaco Editor编辑器 1. 安装依赖2. 使用3. 效果 Monaco Editor &#xff08;官方链接 https://microsoft.github.io/monaco-editor/&#xff09;是一个由微软开发的功能强大的在线代码编辑器&#xff0c;被广泛应用于各种 Web 开发场景中。以下是对 Monaco Editor 的…...

一文详解Mysql索引

背景 索引是存储引擎用于快速找到一条记录的数据结构。索引对良好的性能非常关键。尤其是当表中的数据量越来越大时&#xff0c;索引对性能的影响愈发重要。接下来&#xff0c;就来详细探索一下索引。 索引是什么 索引&#xff08;Index&#xff09;是帮助数据库高效获取数据的…...

基于JAVA+SpringBoot+Vue的旅游管理系统

基于JAVASpringBootVue的旅游管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽兄…...

STM32_实验3_控制RGB灯

HAL_Delay 是 STM32 HAL 库中的一个函数&#xff0c;用于在程序中产生一个指定时间的延迟。这个函数是基于系统滴答定时器&#xff08;SysTick&#xff09;来实现的&#xff0c;因此可以实现毫秒级的延迟。 void HAL_Delay(uint32_t Delay); 配置引脚&#xff1a; 点击 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的容器集群(六)、编写自动维护域名记录的代码脚本

本文为系列测试文章&#xff0c;拟基于自签名证书认证的etcd容器来构建coredns域名解析系统。 一、前置文章 构建后端为etcd的CoreDNS的容器集群&#xff08;一&#xff09;、生成自签名证书 构建后端为etcd的CoreDNS的容器集群&#xff08;二&#xff09;、下载最新的etcd容…...

Leetcode 剑指 Offer II 098.不同路径

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下…...

LabVIEW智能螺杆空压机测试系统

基于LabVIEW软件开发的螺杆空压机测试系统利用虚拟仪器技术进行空压机的性能测试和监控。系统能够实现对螺杆空压机关键性能参数如压力、温度、流量、转速及功率的实时采集与分析&#xff0c;有效提高测试效率与准确性&#xff0c;同时减少人工操作&#xff0c;提升安全性。 项…...

在 Ubuntu 22.04 上安装 PHP 8.2

在 Ubuntu 22.04 上安装 PHP 8.2&#xff0c;可以按照以下步骤进行&#xff1a; 更新系统软件包&#xff1a; 首先&#xff0c;确保你的系统软件包是最新的。 sudo apt update sudo apt upgrade 安装 PHP PPA&#xff08;Personal Package Archive&#xff09;&#xff1a; U…...

Java生死簿管理小系统(简单实现)

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…...

【VoceChat】一个即时聊天(IM)软件,又是一个可以嵌入任何网页聊天系统

为什么要搭建私人聊天软件 在当今数字化时代&#xff0c;聊天软件已经成为人们日常沟通和协作的重要工具。市面上的公共聊天平台虽然方便&#xff0c;但也伴随着诸多隐私、安全、广告和功能限制的问题。对于那些注重数据安全、追求高效沟通的个人或团队来说&#xff0c;搭建一…...

【LeetCode】动态规划—96. 不同的二叉搜索树(附完整Python/C++代码)

动态规划—96. 不同的二叉搜索树 题目描述前言基本思路1. 问题定义2. 理解问题和递推关系二叉搜索树的性质&#xff1a;核心思路&#xff1a;状态定义&#xff1a;状态转移方程&#xff1a;边界条件&#xff1a; 3. 解决方法动态规划方法&#xff1a;伪代码&#xff1a; 4. 进一…...

Nginx UI 一个可以管理Nginx的图形化界面工具

Nginx UI 是一个基于 Web 的图形界面管理工具&#xff0c;支持对 Nginx 的各项配置和状态进行直观的操作和监控。 Nginx UI 的功能非常丰富&#xff1a; 在线查看服务器 CPU、内存、系统负载、磁盘使用率等指标 在线 ChatGPT 助理 一键申请和自动续签 Let’s encrypt 证书 在…...

Vue向上滚动加载数据时防止内容闪动

目前的需求&#xff1a;当前组件向上滚动加载数据&#xff0c;dom加载完后&#xff0c;页面的元素位置不能发生变化 遇到的问题&#xff1a;加载完数据后&#xff0c;又把滚轮滚到之前记录的位置时&#xff0c;内容发生闪动 现在的方案&#xff1a; 加载数据之前记录整体滚动条…...

基于QT、ARM的智能停车管理系统+高分项目+源码

Parking-management-system 本系统基于QT、ARM开发板、Linux系统并对接百度AI 1.1 项目目的: 创建一个智能停车管理系统&#xff0c;能够停入车辆和取出车辆以及查询车辆停入停车场的状态并且计算车辆离开时收费情况。 1.2 项目意义: 实现停车场智能抬杆和智能收费系统&…...

1.6,unity动画Animator屏蔽某个部位,动画组合

动画组合 一边跑一边攻击 using System.Collections; using System.Collections.Generic; using UnityEngine;public class One : MonoBehaviour {private Animator anim;// Start is called before the first frame updatevoid Start(){anim GetComponent<Animator>();…...

发动机冷却系统排空气

发动机冷却系统排空气的几种常见方法 发动机冷却系统是汽车发动机的重要组成部分&#xff0c;它的主要作用是通过循环冷却液来吸收和散发发动机产生的热量&#xff0c;确保发动机在正常工作温度下运行。然而&#xff0c;在冷却系统的运行过程中&#xff0c;由于各种原因&#…...

三周精通FastAPI:1 第一步入门

FastAPI是一个非常棒的python web和api框架&#xff0c;准备用三周的时间“精通它” 学习流程参考FastAPI官网的用户教程&#xff1a;教程 - 用户指南 - FastAPI 学前提示 运行代码 所有代码片段都可以复制后直接使用&#xff08;它们实际上是经过测试的 Python 文件&#x…...

RestTemplate基本使用之HTTP实现GET请求和POST请求

一、GET请求实例 public static TianQi getTianQi(String city) {RestTemplate restTemplate new RestTemplate();HashMap res restTemplate.getForObject("http://www.tianqiapi.com/api/?versionv6&appid15118158&appsecretgVNnwva8&city" city, H…...

2024-10-18 问AI: [AI面试题] 神经网络有哪些不同类型?

文心一言 神经网络有多种不同类型&#xff0c;每种类型都有其特定的结构和应用场景。以下是一些主要的神经网络类型&#xff1a; 前馈神经网络&#xff08;FNN&#xff09;&#xff1a; 也称为全连接神经网络或感知器网络。由输入层、隐藏层和输出层组成&#xff0c;信息流是单…...

【开源免费】基于SpringBoot+Vue.JS课程作业管理系统(JAVA毕业设计)

本文项目编号 T 023 &#xff0c;文末自助获取源码 \color{red}{T023&#xff0c;文末自助获取源码} T023&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

jmeter中对于有中文内容的csv文件怎么保存

jmeter的功能很强大&#xff0c;但是细节处没把握好就得不到预期的结果。今天来讲讲有中文内容的csv文件的参数化使用中需要注意的事项。 对于有中文内容&#xff0c;涉及到编码格式&#xff0c;为了让jmeter能正确地读取csv文件中的中文&#xff0c;需要把文件转码为UTF-8BOM…...

Leetcode 921 Shortest Path in Binary Matrix

题意&#xff1a;求二维矩阵中往8个方向移动的话&#xff0c;从左上方到右下方移动的最短路径 https://leetcode.com/problems/shortest-path-in-binary-matrix/description/ 解答&#xff1a;bfs易得 class Solution { public:int shortestPathBinaryMatrix(vector<vecto…...