WebMvcConfigurationSupport 注册自定义拦截器 Java SpringBoot

news2024/11/29 4:42:43

WebMvcConfigurationSupport 注册自定义拦截器 Java SpringBoot

说明

定义拦截器

拦截器(Interceptor)类,用于在处理请求之前进行一些操作。

  • 实现方式,让类实现HandlerInterceptor
    1. preHandle方法中进行请求拦截的逻辑操作。
    2. 首先判断拦截到的处理器(handler)是否为Controller的方法,如果不是,则直接放行。
@Component
@Slf4j
public class RedisTokenAdminInterceptor implements HandlerInterceptor{}

判断当前请求是不是动态方法(是不是controller层的内容),如果是则进行拦截。

public boolean preHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Object handler) throws IOException {
    // 判断当前兰街道的是Controller的方法还是其它资源 拦截到的不是动态方法,直接放行
    if (!(handler instanceof HandlerMethod)) return true;

    // 1. 从请求头中获取令牌
    String token = request.getHeader(redisTokenProperties.getAdminTokenName());
    log.info("jwt校验:{}", token);
    if (token == null) {
        InterceptorUtil.unLoginInterceptor(response);
        return false;
    }

    try {
        Object empId = redisTemplate.opsForValue().get(token);
        log.info("当前员工ID:{}", empId);
        if (empId == null) {
            InterceptorUtil.customLoginInterceptor(response, MessageConstant.USER_TOKEN_OUT_OF_DATE, "");
            return false;
        }
        // 3. 通过放行
        BaseContext.setUserId(Long.valueOf(empId.toString()));
        return true;
    } catch (Exception exception) {
        InterceptorUtil.customLoginInterceptor(response, exception.getMessage(), "");
        return false;
    }
}

配置类

让配置类继承WebMvcConfigurationSupport

@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport{}

在配置类中注入拦截器RedisTokenAdminInterceptor

@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
    @Autowired
    RedisTokenAdminInterceptor adminInterceptor;

    /**
     * 注册自定义拦截器
     *
     * @param registry InterceptorRegistry
     */
    protected void addInterceptors(InterceptorRegistry registry) {
        log.info("开始注册自定义拦截器...");
        registry.addInterceptor(adminInterceptor).addPathPatterns("/admin/**")
                .excludePathPatterns("/admin/employee/login");
    }
}

添加需要拦截的

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海外社交营销为什么用云手机?不用普通手机?

海外社交营销作为企业拓展海外市场的重要手段,正日益受到企业的青睐。云手机以其成本效益和全球性特征,成为海外社交营销领域的得力助手。那么,究竟是什么特性使得越来越多的企业选择利用云手机进行海外社交营销呢?下文将对此进行…

31-Java前端控制器模式(Front Controller Pattern)

Java前端控制器模式 实现范例 前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给…

32位ARM微控制器: TLE9877QTW40XUMA1、CY9BF416NPMC-G-JNE2、CY9BF316NPMC-G-JNE2描述、器件参数

1、TLE9877QTW40 IC MCU 32BIT 64KB FLASH 48TQFP 描述:TLE9877QTW40属于TLE987x产品系列。TLE9877QTW40是一款单芯片三相电机驱动器,集成了行业标准的Arm Cortex -M3内核,能够实现先进的电机控制算法,例如磁场定向控制。它包括六…

使用 ArcGIS Pro 和 Google Earth Engine 可视化地表温度

在这项研究中,利用 Landsat 热数据通过各种方法检查了 2013 年和 2023 年恰纳卡莱省的地表温度变化。使用了 NDVI、大气层顶部、亮度温度、植被比例和地表温度等公式。研究结果表明,从热图像中获得的数据,特别是地表温度(LST),是土地解释的重要资源。 研究区域:恰纳卡莱…

Android14之selinux报错:ERROR: end of file in comment(一百九十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

NLP---Bert分词

目录&#xff1a; Q&#xff1a;bert分词步骤1&#xff1a;构建N * N 的相关性矩阵&#xff0c;计算相邻两个字的相关性&#xff0c;低的话&#xff08;<阈值&#xff09;就切割。2&#xff1a;将A词进行mask计算出A的embedding&#xff0c;然后将AB两个词一起mask&#xff…

力扣日记3.19-【贪心算法篇】55. 跳跃游戏

力扣日记&#xff1a;【贪心算法篇】55. 跳跃游戏 日期&#xff1a;2024.3.19 参考&#xff1a;代码随想录、力扣 55. 跳跃游戏 题目描述 难度&#xff1a;中等 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃…

此站点的连接不安全,怎么解决?

有部分的网站用户在打开的时候会被提示“此站点的连接不安全”这种现象为什么会出现&#xff0c;大概率是因为没有安装SSL证书或者SSL证书出现了错误&#xff0c;小编在这里面将展开讲解为大家分析其中的原因以及解决方法。 一&#xff1a;遇到该情况的时候该怎么办&#xff1…

Matlab DDPG

文章目录 1 rlSimulinkEnv1.1 说明1.2 例子1.2.1 使用工作空间Agent创建Simulink环境1.2.2 为Simulink模型创建强化学习环境1.2.3 创建Simulink多Agents环境2 创建Simulink环境和训练Agent2.1 创建环境接口2.2 创建DDPG Agent2.3 训练Agent2.4 验证已训练的Agent3 创建Simulink…

【2024.3.19练习】统计子矩阵

题目描述 题目分析 这道题一开始没有思路&#xff0c;使用蛮力枚举的方法时间复杂度为&#xff0c;显然超时。 参考题解后学会了化二维问题为一维问题&#xff0c;先使用的复杂度限制子矩阵的高度&#xff0c;再考虑列&#xff0c;这样就将子矩阵的和问题转变为了连续子序列的…

图论02-并查集的实现(Java)

2.并查集理论基础 并查集的作用 将两个元素添加到一个集合中。 判断两个元素在不在同一个集合并查集的实现 1.DSU 类定义&#xff1a;DSU 类中包含一个整型数组 s 用来存储元素的父节点信息。2.DSU 构造函数&#xff1a; 构造函数 DSU(int size) 接受一个参数 size&#xff0…

万用表革新升级,WT588F02BP-14S语音芯片助力智能测量新体验v

万能表功能&#xff1a; 万能表是一款集多功能于一体的电子测量工具&#xff0c;能够精准测量电压、电流、电阻等参数&#xff0c;广泛应用于电气、电子、通信等领域。其操作简便、测量准确&#xff0c;是工程师们进行电路调试、故障排查的得力助手&#xff0c;为提升工作效率…

Unity 学习笔记 3.向量

下载源码 UnityPackage 1.基础知识 2.求两个对象之间的距离 3.脚本 // 存储目标对象的对象GameObject target;// 存储两者之间的距离float distance;void Start(){// 用Find()找到指定游戏对象target GameObject.Find("Cube");// 使用Vector3.Distance(起始位置&…

使用 Redux 管理 React 应用状态

使用 Redux 管理 React 应用状态 在复杂的 React 应用中&#xff0c;管理组件状态变得越来越复杂&#xff0c;这时候引入 Redux 可以帮助我们更好地管理状态。Redux 是一个可预测状态容器&#xff0c;它可以帮助我们统一管理应用的状态&#xff0c;使得状态变化更加可控。本文…

WEB搭建LNMP环境-Discuz论坛

目录 一、安装PHP并修改配置文件(nginx自行安装) 二、安装MySQL数据库并配置文件 三、 搭建discuz论坛 一、安装PHP并修改配置文件(nginx自行安装) yum install php php-gd php-fpm php-mysqlnd php-xml -y vim /etc/nginx/nginx.conf #配置nginx和PHP交互location …

Spring-Mybatis字段映射

MybatisComfig.xml文件设置 <settings><setting name"mapUnderscoreToCamelCase" value"true"/> </settings> 完成全局配置将数据库下划线映射为驼峰式命名

STM32CubeMX学习笔记24---FreeRTOS(消息队列)

一. 队列简介 队列是为了任务与任务、任务与中断之间的通信而准备的&#xff0c;可以在任务与任务、任务与中 断之间传递消息&#xff0c;队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之 间要交流的数据保存在队列中&#xff0c;叫做队列项目。队列…

SQLiteC/C++接口详细介绍sqlite3_stmt类(一)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类简介 下一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;二&#xff09; ​ 序言&#xff1a; 本文开始了SQLite的第二个类的详细介绍…

JavaScript实现简单的表单验证

关键代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

基于python企业办公文件分类系统flask-django-nodejs-php

系统内容可以随时更新&#xff0c;这点对于现代企业通知与文件分享管理来说是很重要&#xff0c;但传统的管理方式都无法做到的。企业办公文件分类系统就可以每天更新&#xff0c;随时反映您企业通知与文件分享的最新情况。 网络的广泛应用给生活带来了十分的便利。所以把企业…