首页 > 其他分享 >拦截器实现JWT验证

拦截器实现JWT验证

时间:2023-09-20 23:45:02浏览次数:32  
标签:拦截器 验证 jwtUtils JWT Token public

拦截器实现JWT验证

要在每个请求发送后验证JWT Token的有效性,可以使用Spring中的拦截器(interceptor)来实现。拦截器可以在请求到达控制器之前对请求进行预处理,包括验证JWT Token的有效性。以下是一个简单的示例:

首先,创建一个拦截器类 JwtInterceptor,用于验证JWT Token的有效性:

//Jwt验证拦截
@Component
public class JwtInterceptor implements HandlerInterceptor {

    private final JwtUtils jwtUtils;

    public JwtInterceptor(JwtUtils jwtUtils) {
        this.jwtUtils = jwtUtils;
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 从请求头中获取Token
        String token = request.getHeader("Authorization");

        if (token != null && token.startsWith("Bearer ")) {
            // 去除Token前缀
            String jwtToken = token.substring(7);


            // 验证Token的有效性,具体验证方法可自定义
            Claims claims = jwtUtils.parseJwt(jwtToken);
            Date expirationDate = claims.getExpiration();
            if (claims.get("userid") != null && expirationDate != null && expirationDate.after(new Date()))
                return true; // 验证通过,继续处理请求
            else
                return false;
        }
        else
            return false;
    }
}

接下来,配置该拦截器类,并将其添加到Spring的拦截器链中。创建一个配置类 WebMvcConfig

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    private final JwtInterceptor jwtInterceptor;

    public WebMvcConfig(JwtInterceptor jwtInterceptor) {
        this.jwtInterceptor = jwtInterceptor;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jwtInterceptor)
                .excludePathPatterns("/api/Signin")
                .excludePathPatterns("/api/Signup"); // 声明放行的路径,不进行Token验证

        // 可以根据需求添加更多拦截器
        // registry.addInterceptor(anotherInterceptor);
    }
}

标签:拦截器,验证,jwtUtils,JWT,Token,public
From: https://www.cnblogs.com/chuimber/p/17718845.html

相关文章

  • 关于.Net 6.0 在Linux ,Docker容器中,不安装任何依赖就生成图形验证码!!!!!!!!!!!
    在.NetFramework时代,我们生成验证码大多都是用System.Drawing。在.Net6中使用也是没有问题的。但是,System.Drawing却依赖于WindowsGDI+。为了实现跨平台,我陷入了沉思!! 微软推荐使用SkiaSharp进行替代,所以就开始了,踩坑之旅首先,安装SkiaSharp 编写好图形生成代码。......
  • 用户注册与登录界面java源码(带验证码)
    importjavax.swing.*;importjava.awt.*;importjava.util.Random;publicclassRegistrationSystemextendsJFrame{privatefinalJTextFieldusernameTextField;privatefinalJPasswordFieldpasswordField;......
  • Vue3引入滑块验证组件-2分钟搞定
    手把手视频地址:https://www.bilibili.com/video/BV1Nu4y1r7Wr/安装npminstall--savevue3-slide-verify登录页面引入template下<template><divclass="login"> <el-cardclass="cover"v-if="loginUser.data.user"> <slide......
  • 关于.Net 6.0 在Linux ,Docker容器中,不安装任何依赖就生成图形验证码!!!!!!!!!!!
    在.NetFramework时代,我们生成验证码大多都是用System.Drawing。在.Net6中使用也是没有问题的。但是,System.Drawing却依赖于WindowsGDI+。为了实现跨平台,我陷入了沉思!! 微软推荐使用SkiaSharp进行替代,所以就开始了,踩坑之旅首先,安装SkiaSharp 编写好图形生成代码。......
  • Java验证电子邮箱地址、电话号码
    demo1:/***本类用于处理、检查导入数据的格式*@authorAdministrator*weiwenshuai20110915*/publicclassCheckData{/***验证手机号码、电话号码是否有效*手机号前面加86的情况也考虑*新联通*(中国联通+中国网通)手机号码开头数字130、1......
  • webman:生成图形验证码(v1.5.7)
    一,官方文档地址:1,文档https://www.workerman.net/doc/webman/components/captcha.html2,用到的库项目代码地址:https://github.com/webman-php/captcha二,安装库:1,用composer安装liuhongdi@lhdpc:/data/webman/imageadmin$composerrequirewebman/captcha2,查看所......
  • 全局异常处理机制与拦截器
    全局异常处理机制/***全局异常处理器*应用到所有@RequestMapping注解的方法,在其抛出Exception异常时执行*///@ControllerAdvice//可以返回逻辑视图转发和重定向的!@RestControllerAdvice//直接返回json字符串publicclassGlobalException{/*发生异常-》......
  • DRF之JWT签发Token源码分析
    【一】JWT介绍JWT(JSONWebToken)是一种用于身份认证和授权的开放标准(RFC7519)。它基于JSON格式定义了一种安全的令牌,用于在客户端和服务器之间传输信息。【二】JWT三段式JWT(JSONWebToken)是一种用于身份认证和授权的开放标准(RFC7519)。它基于JSON格式定义了一种安全的令......
  • 验证iso镜像文件包是否可引导
    全局一、Linux下$filefd11src.iso显示bootable就是代表,iso是可引导的fd11src.iso:ISO9660CD-ROMfilesystemdata'FD11SRC'(bootable)二、Window下可以使用ULTRAISO(软碟通),载入后查看三、虚拟机加载新建一个虚拟机,载入iso如果能进入界面,就是可以引......
  • 拦截器
    拦截器拦截器概述SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。过滤器和拦截器区别过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过......