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过滤器抛出的异常
自定义过滤器如下: /*** jwt过滤器,验证令牌是否合法** author 朱铭健*/ Slf4j public class JwtAuthenticationFilter extends OncePerRequestFilter {Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse resp…...
中小型企业网络的设计与实现
资料下载中小型企业网络的设计与实现论文资源-CSDN文库 摘 要 本文规划的是一个公司的网络搭建,网络设计包括了多个部门的网络架构,每个部门通过VLAN进行隔离,确保了网络的安全性和高效。 华为企业网络模拟平台(ENSP)…...
小马识途海外媒体推广有何优势?
互联网让地球变得像一个村子一样,信息可以瞬间变得人尽皆知,商品和服务也同样习惯了跨国合作。中国不少物美价廉的产品在世界各地都很受欢迎,国内小资群体对国外的服饰和美妆更是偏爱有加。小马识途营销顾问认为,中国品牌不出走国…...
Spring Boot知识管理:跨平台集成方案
4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图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 命令用于指定编译目标(在此例中为 mylib 静态库)的头文件搜索路径。具体来说,这条命令的作用包括以下几个方面: 1. 添加包含目录 mylib&…...
【Flutter】Dart:运算符
在 Dart 中,运算符是非常重要的组成部分,它们可以对变量和常量进行多种运算操作。理解和掌握 Dart 中的各种运算符不仅可以帮助你编写更加高效、简洁的代码,还能更好地理解其背后的逻辑和设计。本文将深入探讨 Dart 中的运算符,包…...
ChatGPT01-preivew体验报告:内置思维链和多个llm组合出的COT有啥区别呢?丹田与练气+中学生物理奥赛题测试,名不虚传还是名副其实?
一个月前,o1发布的时候,我写了篇文章介绍 逻辑推理能力堪比博士生,OpenAI发布全新AI模型系列: o1 - 大模型或许进入新阶段,还翻译了官方的介绍 解密OpenAI o1是如何让LLMs获得逻辑推理能力的 - CoT * RL,也…...
《云计算网络技术与应用》实训6-1:配置KVM虚拟机使用NAT网络
任务1、计算节点基础环境准备 1. 使用VMware安装CentOS 7虚拟机,安装时记得开启CPU虚拟化,命名为“KVMC6”。 2. (网卡配置和之前的一样,都用100网段)网关设置为192.168.100.1,地址段为192.168.100.10-25…...
【Unity新闻】Unity 6 正式版发布
Unity CEO Matt Bromberg 在今天自豪地宣布,Unity 6 正式发布!作为迄今为止最强大和稳定的版本,Unity 6 为游戏和应用开发者提供了大量的新功能和工具,帮助他们加速开发并提升性能。 本次正式版是6.0000.0.23f1(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…...
编程考古-计算机发展(上)
计算机/器现在是我们日常生活中的重要工具,它的发展历程见证了人类数学计算能力的不断提升。 什么是计算 计算的本质在于基于规则对符号串进行变换。简言之,从一个初始的符号串(输入)出发,依据既定的法则逐步改变这个…...
pc轨迹回放制作
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:pc轨迹回放制作 主要内容:制作车辆轨迹操作页,包括查询条件、动态轨迹回放、车辆轨迹详情表单等 应用场景:车辆…...
无向图中的一些问题与处理(上接无向图知识简记)
一、有向图中的排序与调度 1、深度优先搜索的排序 使用深度优先搜索对图中顶点进行排序,根据数据结构性质与递归保存顺序,有以下三种排列顺序 (1) 前序:在递归调用之前将顶点加入队列。 (2)后…...
AIGC助力小学生编程梦:C++入门不再难!
文章目录 一、AIGC时代下的编程教育新趋势二、小学生C入门趣味编程的意义三、小学生C入门趣味编程的实践策略四、面临的挑战与应对策略五、AIGC技术在小学生C编程中的应用与前景《小学生C趣味编程从入门到精通》编辑推荐内容简介作者简介目录 随着人工智能生成内容(…...
AI开发-三方库-Hugging Face-Pipelines
1 需求 需求1:pipeline支持的任务类型 需求2:推理加速使用CPU还是GPU 需求3:基于pipeline的文本分类示例 需求4:pipeline实现原理 模型使用步骤(Raw text -》Input IDs -》Logits -》Predictions)&…...
【Python网络编程】学习Socket编程,打造网络应用!
【Python网络编程】学习Socket编程,打造网络应用! 网络编程是现代计算机科学中的重要一环,几乎所有的应用都依赖网络传输数据。无论是创建简单的客户端-服务器模型,还是构建复杂的网络应用,Socket 编程都是关键的技术…...
docker (desktopcompose) download
docker docker-compose download 百度网盘获取离线包链接release-notes 参考dockerdocker-composewlspowershell...
即时通讯:单聊消息逻辑
在线消息(对方在线) 1.client发送消息到msg_server 2.msg_server判断消息有效性,每秒发送的消息不能超过限制,无误后转发给db_server 3.db_server判断为单聊 查找对应的会话,不存在则创建两个会话(双方…...
Libevent源码剖析之reactor
1 简介 reactor 是一种事件驱动的并发处理模式,常用于网络服务器和事件循环系统中。它主要的功能是通过单线程或者多线程处理I/O操作,避免阻塞,并且能够高效处理大量并发的事件。 one loop per thread or process,以下摘自 reacto…...
游戏模组框架:SMAPI构建个性化星露谷体验的全栈解决方案
游戏模组框架:SMAPI构建个性化星露谷体验的全栈解决方案 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 1 技术架构解析:SMAPI如何重塑游戏扩展能力 在独立游戏模组生态中&a…...
从零开始构建Kaggle Python Docker镜像:开发者完整教程
从零开始构建Kaggle Python Docker镜像:开发者完整教程 【免费下载链接】docker-python Kaggle Python docker image 项目地址: https://gitcode.com/gh_mirrors/do/docker-python Kaggle Python Docker镜像为数据科学家和开发者提供了一个预配置的环境&…...
HTML怎么显示导出文件体积优化建议_HTML压缩图片选项【操作】
优化图片需用现代格式(如WebP)合理尺寸有损压缩;HTML压缩只删注释、合并空白、移除可选闭合标签;构建时图片须经imagemin插件压缩,CSS背景图也要走loader处理。HTML里怎么让图片变小却不模糊导出体积大,八成…...
C语言完美演绎7-6
/* 范例: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、…...
技术团队领导一对一沟通指南:打造高效人员管理与反馈机制
技术团队领导一对一沟通指南:打造高效人员管理与反馈机制 【免费下载链接】tlroadmap Тимлид – это ❄️, потому что в каждой компании он уникален и неповторим. 项目地址: https://gitcode.com/gh_m…...
Browsershot完整指南:掌握网页截图与PDF生成的核心方法
Browsershot完整指南:掌握网页截图与PDF生成的核心方法 【免费下载链接】browsershot Convert HTML to an image, PDF or string 项目地址: https://gitcode.com/gh_mirrors/br/browsershot Browsershot是一款强大的工具,能够轻松实现HTML到图片、…...
WebSocket 命令行神器 wscat:5分钟快速上手 WebSocket 调试
WebSocket 命令行神器 wscat:5分钟快速上手 WebSocket 调试 【免费下载链接】wscat WebSocket cat 项目地址: https://gitcode.com/gh_mirrors/ws/wscat wscat 是一款轻量级的 WebSocket 命令行工具,能帮助开发者快速测试和调试 WebSocket 连接&a…...
5步焕新Win11桌面:MicaForEveryone打造个性化窗口美学指南
5步焕新Win11桌面: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是控制并发流程的重要工具,它不仅能传递请求范围的数据,还能优雅地处理超时、取消等场景。正确使用Context可以避免资源泄漏、提升程序健壮性,但错误的使用方式可能导致难以排查的问题。本文将深入探讨Context的核心使用原则…...
学习记录:机器学习入门案例——波士顿房价预测(三)-波士顿房价预测与加州房价预测对比
2026年4月7日波士顿房价预测与加州房价预测都已经运行成功,不禁疑惑,二者都是线性回归模型,有什么区别呢。一、核心共同点:骨架完全相同从代码层面看,这两个例子本质上执行的是同一套工作流程,这也是任何机…...
