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

SpringSecurity 捕获自定义JWT过滤器抛出的异常

自定义过滤器如下:

/*** jwt过滤器,验证令牌是否合法** @author 朱铭健*/
@Slf4j
public class JwtAuthenticationFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {//换成你自己的获取Token方式String token = "";if (StringUtil.isNotNullOrEmpty(token)) {try {//TODO 这里写校验逻辑和抛出异常} catch (JWTException e) {//这里的JwtAuthException是一个自定义的AuthenticationExceptionthrow new JwtAuthException(e.getMessage());} catch (Exception e) {log.error("JWT认证异常 - {}:", token, e);//这里的JwtAuthException是一个自定义的AuthenticationExceptionthrow new JwtAuthException("JWT认证异常");}}filterChain.doFilter(request, response);}
}

定义一个 AuthenticationEntryPoint

/*** @author 朱铭健*/
@Slf4j
@Component
public class AuthenticationExceptionHandler implements AuthenticationEntryPoint{@Overridepublic void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException {//使用response处理你的异常,包括响应json,跳转页面等}
}

配置 Configurer,关键是要将过滤器置于ExceptionTranslationFilter之后,异常处理是由ExceptionTranslationFilter实现的

public class JwtAuthenticationConfigurer extends AbstractHttpConfigurer<JwtAuthenticationConfigurer, HttpSecurity> {@Overridepublic void configure(HttpSecurity builder) {JwtAuthenticationFilter filter = new JwtAuthenticationFilter();// 务必注意这里与配置类中声明的先后顺序builder.addFilterAfter(filter, ExceptionTranslationFilter.class);}
}
    public SecurityFilterChain adminFilterChain(HttpSecurity http) throws Exception {//Jwt相关配置http.with(new JwtAuthenticationConfigurer(), Customizer.withDefaults());return http.build();}

相关文章:

SpringSecurity 捕获自定义JWT过滤器抛出的异常

自定义过滤器如下&#xff1a; /*** jwt过滤器&#xff0c;验证令牌是否合法** author 朱铭健*/ Slf4j public class JwtAuthenticationFilter extends OncePerRequestFilter {Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse resp…...

中小型企业网络的设计与实现

资料下载中小型企业网络的设计与实现论文资源-CSDN文库 摘 要 本文规划的是一个公司的网络搭建&#xff0c;网络设计包括了多个部门的网络架构&#xff0c;每个部门通过VLAN进行隔离&#xff0c;确保了网络的安全性和高效。 华为企业网络模拟平台&#xff08;ENSP&#xff09…...

小马识途海外媒体推广有何优势?

互联网让地球变得像一个村子一样&#xff0c;信息可以瞬间变得人尽皆知&#xff0c;商品和服务也同样习惯了跨国合作。中国不少物美价廉的产品在世界各地都很受欢迎&#xff0c;国内小资群体对国外的服饰和美妆更是偏爱有加。小马识途营销顾问认为&#xff0c;中国品牌不出走国…...

Spring Boot知识管理:跨平台集成方案

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…...

逆向工程基本流程

1 逆向的基本流程 1获取目标app (官网,豌豆荚),尽量不要去华为应用市场,小米应用市场下载–多渠道打包,安装到手机上 2使用抓包工具 抓包分析(charles,fiddler…) 3使用反编译工具 (JADX,JD-GUI。。),把apk反编译成java代码,分析java代码,定位代码位置 4 使用动态分…...

target_include_directories是如何组织头文件的?

target_include_directories(mylib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) 这条 CMake 命令用于指定编译目标&#xff08;在此例中为 mylib 静态库&#xff09;的头文件搜索路径。具体来说&#xff0c;这条命令的作用包括以下几个方面&#xff1a; 1. 添加包含目录 mylib&…...

【Flutter】Dart:运算符

在 Dart 中&#xff0c;运算符是非常重要的组成部分&#xff0c;它们可以对变量和常量进行多种运算操作。理解和掌握 Dart 中的各种运算符不仅可以帮助你编写更加高效、简洁的代码&#xff0c;还能更好地理解其背后的逻辑和设计。本文将深入探讨 Dart 中的运算符&#xff0c;包…...

ChatGPT01-preivew体验报告:内置思维链和多个llm组合出的COT有啥区别呢?丹田与练气+中学生物理奥赛题测试,名不虚传还是名副其实?

一个月前&#xff0c;o1发布的时候&#xff0c;我写了篇文章介绍 逻辑推理能力堪比博士生&#xff0c;OpenAI发布全新AI模型系列&#xff1a; o1 - 大模型或许进入新阶段&#xff0c;还翻译了官方的介绍 解密OpenAI o1是如何让LLMs获得逻辑推理能力的 - CoT * RL&#xff0c;也…...

《云计算网络技术与应用》实训6-1:配置KVM虚拟机使用NAT网络

任务1、计算节点基础环境准备 1. 使用VMware安装CentOS 7虚拟机&#xff0c;安装时记得开启CPU虚拟化&#xff0c;命名为“KVMC6”。 2. &#xff08;网卡配置和之前的一样&#xff0c;都用100网段&#xff09;网关设置为192.168.100.1&#xff0c;地址段为192.168.100.10-25…...

【Unity新闻】Unity 6 正式版发布

Unity CEO Matt Bromberg 在今天自豪地宣布&#xff0c;Unity 6 正式发布&#xff01;作为迄今为止最强大和稳定的版本&#xff0c;Unity 6 为游戏和应用开发者提供了大量的新功能和工具&#xff0c;帮助他们加速开发并提升性能。 本次正式版是6.0000.0.23f1&#xff08;LTS&a…...

基于语音识别的停车共享小程序(lw+演示+源码+运行)

目 录 1 绪论1 1.1 课题研究背景1 1.2 研究现状1 1.3 论文结构安排1 2 系统关键技术2 2.1 微信小程序2 2.2 微信Web开发者工具2 2.3 JavaScript简介2 2.4 微信小程序API接口2 2.5 MYSQL数据库2 3 系统分析1 3.1 可行性分析1 3.1.1 技术可行性1 3.1.2 经济可行性1…...

编程考古-计算机发展(上)

计算机/器现在是我们日常生活中的重要工具&#xff0c;它的发展历程见证了人类数学计算能力的不断提升。 什么是计算 计算的本质在于基于规则对符号串进行变换。简言之&#xff0c;从一个初始的符号串&#xff08;输入&#xff09;出发&#xff0c;依据既定的法则逐步改变这个…...

pc轨迹回放制作

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;pc轨迹回放制作 主要内容&#xff1a;制作车辆轨迹操作页&#xff0c;包括查询条件、动态轨迹回放、车辆轨迹详情表单等 应用场景&#xff1a;车辆…...

无向图中的一些问题与处理(上接无向图知识简记)

一、有向图中的排序与调度 1、深度优先搜索的排序 使用深度优先搜索对图中顶点进行排序&#xff0c;根据数据结构性质与递归保存顺序&#xff0c;有以下三种排列顺序 &#xff08;1&#xff09; 前序&#xff1a;在递归调用之前将顶点加入队列。 &#xff08;2&#xff09;后…...

AIGC助力小学生编程梦:C++入门不再难!

文章目录 一、AIGC时代下的编程教育新趋势二、小学生C入门趣味编程的意义三、小学生C入门趣味编程的实践策略四、面临的挑战与应对策略五、AIGC技术在小学生C编程中的应用与前景《小学生C趣味编程从入门到精通》编辑推荐内容简介作者简介目录 随着人工智能生成内容&#xff08;…...

AI开发-三方库-Hugging Face-Pipelines

1 需求 需求1&#xff1a;pipeline支持的任务类型 需求2&#xff1a;推理加速使用CPU还是GPU 需求3&#xff1a;基于pipeline的文本分类示例 需求4&#xff1a;pipeline实现原理 模型使用步骤&#xff08;Raw text -》Input IDs -》Logits -》Predictions&#xff09;&…...

【Python网络编程】学习Socket编程,打造网络应用!

【Python网络编程】学习Socket编程&#xff0c;打造网络应用&#xff01; 网络编程是现代计算机科学中的重要一环&#xff0c;几乎所有的应用都依赖网络传输数据。无论是创建简单的客户端-服务器模型&#xff0c;还是构建复杂的网络应用&#xff0c;Socket 编程都是关键的技术…...

docker (desktopcompose) download

docker docker-compose download 百度网盘获取离线包链接release-notes 参考dockerdocker-composewlspowershell...

即时通讯:单聊消息逻辑

在线消息&#xff08;对方在线&#xff09; 1.client发送消息到msg_server 2.msg_server判断消息有效性&#xff0c;每秒发送的消息不能超过限制&#xff0c;无误后转发给db_server 3.db_server判断为单聊 查找对应的会话&#xff0c;不存在则创建两个会话&#xff08;双方…...

Libevent源码剖析之reactor

1 简介 reactor 是一种事件驱动的并发处理模式&#xff0c;常用于网络服务器和事件循环系统中。它主要的功能是通过单线程或者多线程处理I/O操作&#xff0c;避免阻塞&#xff0c;并且能够高效处理大量并发的事件。 one loop per thread or process&#xff0c;以下摘自 reacto…...

游戏模组框架:SMAPI构建个性化星露谷体验的全栈解决方案

游戏模组框架&#xff1a;SMAPI构建个性化星露谷体验的全栈解决方案 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 1 技术架构解析&#xff1a;SMAPI如何重塑游戏扩展能力 在独立游戏模组生态中&a…...

从零开始构建Kaggle Python Docker镜像:开发者完整教程

从零开始构建Kaggle Python Docker镜像&#xff1a;开发者完整教程 【免费下载链接】docker-python Kaggle Python docker image 项目地址: https://gitcode.com/gh_mirrors/do/docker-python Kaggle Python Docker镜像为数据科学家和开发者提供了一个预配置的环境&…...

HTML怎么显示导出文件体积优化建议_HTML压缩图片选项【操作】

优化图片需用现代格式&#xff08;如WebP&#xff09;合理尺寸有损压缩&#xff1b;HTML压缩只删注释、合并空白、移除可选闭合标签&#xff1b;构建时图片须经imagemin插件压缩&#xff0c;CSS背景图也要走loader处理。HTML里怎么让图片变小却不模糊导出体积大&#xff0c;八成…...

C语言完美演绎7-6

/* 范例&#xff1a;7-6 */#include <stdio.h>void main(){int a;int b;int *ptr; /* 定义指针变量ptr */a5;ba;ptr&b; /* 把变量b的地址赋值给指针变量ptr *//* 输出变量a、b、ptr的值到屏幕 */printf("\na%d\nb%d\nPtr%d",a,b,ptr);/* 输出变量a、…...

技术团队领导一对一沟通指南:打造高效人员管理与反馈机制

技术团队领导一对一沟通指南&#xff1a;打造高效人员管理与反馈机制 【免费下载链接】tlroadmap Тимлид – это ❄️, потому что в каждой компании он уникален и неповторим. 项目地址: https://gitcode.com/gh_m…...

Browsershot完整指南:掌握网页截图与PDF生成的核心方法

Browsershot完整指南&#xff1a;掌握网页截图与PDF生成的核心方法 【免费下载链接】browsershot Convert HTML to an image, PDF or string 项目地址: https://gitcode.com/gh_mirrors/br/browsershot Browsershot是一款强大的工具&#xff0c;能够轻松实现HTML到图片、…...

WebSocket 命令行神器 wscat:5分钟快速上手 WebSocket 调试

WebSocket 命令行神器 wscat&#xff1a;5分钟快速上手 WebSocket 调试 【免费下载链接】wscat WebSocket cat 项目地址: https://gitcode.com/gh_mirrors/ws/wscat wscat 是一款轻量级的 WebSocket 命令行工具&#xff0c;能帮助开发者快速测试和调试 WebSocket 连接&a…...

5步焕新Win11桌面:MicaForEveryone打造个性化窗口美学指南

5步焕新Win11桌面&#xff1a;MicaForEveryone打造个性化窗口美学指南 【免费下载链接】MicaForEveryone Mica For Everyone is a tool to enable backdrop effects on the title bars of Win32 apps on Windows 11. 项目地址: https://gitcode.com/gh_mirrors/mi/MicaForEve…...

Go Context 控制流的正确使用方式

Go语言中的Context是控制并发流程的重要工具&#xff0c;它不仅能传递请求范围的数据&#xff0c;还能优雅地处理超时、取消等场景。正确使用Context可以避免资源泄漏、提升程序健壮性&#xff0c;但错误的使用方式可能导致难以排查的问题。本文将深入探讨Context的核心使用原则…...

学习记录:机器学习入门案例——波士顿房价预测(三)-波士顿房价预测与加州房价预测对比

2026年4月7日波士顿房价预测与加州房价预测都已经运行成功&#xff0c;不禁疑惑&#xff0c;二者都是线性回归模型&#xff0c;有什么区别呢。一、核心共同点&#xff1a;骨架完全相同从代码层面看&#xff0c;这两个例子本质上执行的是同一套工作流程&#xff0c;这也是任何机…...