首页 > 其他分享 >springBoot自定义拦截器

springBoot自定义拦截器

时间:2024-01-11 14:03:10浏览次数:40  
标签:拦截器 springBoot 自定义 token common org fuel import com

编写FuelH5InterceptorConfig配置类

package com.fuel.framework.config;

import com.fuel.framework.interceptor.FuelH5Interceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 通用配置
 * 
 * @author hhxx
 */
@Configuration
public class FuelH5InterceptorConfig implements WebMvcConfigurer
{
    @Autowired
    private FuelH5Interceptor fuelH5Interceptor;

    /**
     * 自定义拦截规则
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        registry.addInterceptor(fuelH5Interceptor)
                .addPathPatterns("/api/wx/**")    //拦截所有请求 通过判断token是否合法来决定是否访问
                .addPathPatterns("/api/personal/**")
                .addPathPatterns("/api/scan/**")
                .excludePathPatterns("/api/wx/getToken")
                .excludePathPatterns("/api/scan/login")
                .excludePathPatterns("/api/scan/wxCallBackInfo");
    }

}

编写FuelH5Interceptor处理类

package com.fuel.framework.interceptor;

import com.alibaba.fastjson2.JSON;
import com.fuel.common.config.JWTConfig;
import com.fuel.common.constant.Constants;
import com.fuel.common.constant.HttpStatus;
import com.fuel.common.core.domain.AjaxResult;
import com.fuel.common.utils.ServletUtils;
import com.fuel.common.utils.StringUtils;
import com.fuel.common.utils.spring.SpringUtils;
import com.fuel.framework.utils.jwt.JwtUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class FuelH5Interceptor implements HandlerInterceptor {

    // 令牌自定义标识
    @Value("${token.header}")
    private String header;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
    {
        //获取token
        String requestURI = request.getRequestURI();
        String token = request.getHeader(header);
        if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX))
        {
            token = token.replace(Constants.TOKEN_PREFIX, "");
        }
        JWTConfig jwtConfig = SpringUtils.getBean(JWTConfig.class);
        if (StringUtils.isNotBlank(token)) {
            try {
                JwtUtils.verify(jwtConfig.getUserName(), jwtConfig.getPassWord(), token);
            }  catch (Exception e) {
                ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(HttpStatus.UNTOKEN, "token过期")));
                return false;
            }
        }else {
            ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(HttpStatus.UNTOKEN, "请求未携带token")));
            return false;
//            throw new ServiceException("请求未携带token", HttpStatus.UNTOKEN);
        }

        return true;
    }
}

标签:拦截器,springBoot,自定义,token,common,org,fuel,import,com
From: https://blog.51cto.com/momo1226/9198320

相关文章

  • 27-K8 CRD:如何根据需求自定义你的 API?
    随着使用的深入,你会发现Kubernetes中内置的对象定义,比如Deployment、StatefulSet、Configmap,可能已经不能满足你的需求了。你很希望在Kubernetes定义一些自己的对象,一来可以通过kube-apiserver提供统一的访问入口,二来可以像其他内置对象一样,通过kubectl命令管理这些自定......
  • 【转】C# WinForm 自定义控件,DataGridView背景透明,TabControl背景透明
    原文:https://www.cnblogs.com/leavind/p/6732530.html 1usingSystem.ComponentModel;2usingSystem.Drawing;3usingSystem.Windows.Forms;4namespaceRaywindStudio.Components5{6publicclassTabCtrlX:TabControl7{8publicT......
  • SpringBoot3.x升级整合各依赖
    开发环境开发依赖版本openJDK17SpringBoot3.2.1以下是SpringBoot3.x版本依赖坐标发生变化的常用框架一、整合MybatisPlusSpringBoot2.x版本引入的依赖是:<mybatis.plus.version>3.4.2</mybatis.plus.version><dependency><groupId>com.baomidou</gro......
  • Vue2 使用 Knova Canvas 合成图片、多个视频、音频在一个画面中并播放,自定义 video co
    本文转载https://blog.csdn.net/RosaChampagne/article/details/128020428?spm=1001.2014.3001.5502的文章安装插件npminstallvue-konva@2konva--save在main.js中使用importVuefrom'vue';importVueKonvafrom'vue-konva';Vue.use(VueKonva);相关实现代......
  • Springboot 项目集成 PageOffice V6 最简单代码
    本文描述了PageOffice产品在Springboot项目中如何集成调用。(本示例使用了Thymeleaf模板引擎)新建Springboot项目:pageoffice6-springboot2-simple在您项目的pom.xml中通过下面的代码引入PageOffice依赖。pageoffice.jar已发布到Maven中央仓库(opensnewwindow),建议使用最新......
  • SpringBoot配置加载优先级
    优先级:命令行参数>环境变量>配置文件1.命令行参数配置java-jar-Dserver.port=8000ruoyi-admin.jar2.环境变量配置linux系统环境:#申明环境变量exportSERVER_PORT=10000#执行jar包java-jardemo.jarwindow系统环境:idea中:java-jar命令使用环境变量需要再win系统环境变量中......
  • SpringBoot-Mybatis整合
     创建数据库CREATETABLE`user`( `id`int(11)NOTNULLAUTO_INCREMENTcomment'学号', `name`varchar(20)DEFAULTNULL, `pwd`int(11)DEFAULTNULL, PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=18DEFAULTCHARSET=utf8;创建一个springboo......
  • 使用Winform开发自定义用户控件,以及实现相关自定义事件的处理
    在我们一些非标的用户界面中,我们往往需要自定义用户控件界面,从而实现不同的内容展示和处理规则,本篇内容介绍使用Winform开发自定义用户控件,以及实现相关自定义事件的处理。1、用户控件的界面分析对于比较规范的界面,需要进行一定的分析,以便从中找到对应的规则,逐步细化为自定义用......
  • Springboot 扩展点
    1.ApplicationContextInitializerorg.springframework.context.ApplicationContextInitializer这是整个spring容器在刷新之前初始化ConfigurableApplicationContext的回调接口,简单来说,就是在容器刷新之前调用此类的initialize方法。这个点允许被用户自己扩展。用户可以在......
  • SpringBoot中使用单例模式+ScheduledExecutorService实现异步多线程任务(若依源码学习
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662设计模式-单例模式-饿汉式单例模式、懒汉式单例模式、静态内部类在Java中的使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/......