Jwt拦截器代码

该文章介绍了如何在SpringBoot应用中实现Jwt拦截器,用于验证前端发送的请求中的JWT令牌,确保请求的安全性。拦截器检查每个请求的X-Token头,如果令牌有效则允许请求通过,否则返回错误信息。配置还包括了添加CORS映射和排除特定不受拦截的URL路径。

一、代码

@Component
@Slf4j
public class JwtInterceptorConfig implements HandlerInterceptor {
    @Autowired
    private JwtUtil jwtUtil;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if (!(handler instanceof HandlerMethod)) {
            //handler 可能是 RequestResourceHandler springboot 程序 访问静态资源 默认去classpath下的static目录去查询
            return true;
        }

        String token = request.getHeader("X-Token");
        if (!StringUtils.isEmpty(token)) {
            try {
                jwtUtil.parseToken(token);
                log.debug(request.getRequestURI());
                return true;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        log.debug(request.getRequestURI() + " 禁止访问...");
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(JSON.toJSONString(Result.fail(20003, "jwt令牌无效,请重新登录")));
        return false;
    }
}

@Configuration
public class MyWebConfig implements WebMvcConfigurer {
    @Autowired
    private JwtInterceptorConfig jwtInterceptorConfig;
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedOrigins("http://localhost:8001")
//                .allowedOriginPatterns("https://180.xxxx.47")
                .allowedOrigins("*")
                .allowedHeaders("*")
                .allowedMethods("*");
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        InterceptorRegistration registration = registry.addInterceptor(jwtInterceptorConfig);
        registration.addPathPatterns("/**")
                .excludePathPatterns(
                        "/user/login",
                        "/user/info",
                        "/user/logout",
                        "/error",
                        "/swagger-ui/**",
                        "/swagger-resources/**",
                        "/v3/**");
    }
}

二、工作原理

1、 使用原因
在使用Jwt作为安全认证工具时,如果不使用拦截器,后端就无法验证前端发来的authoriation认证信息,导致出现安全问题(前端丢失cookie、cookie被篡改)。
2、工作流程
拦截器会验证前端发来的每一次请求,并对authoriation信息进行验证,判断是否为请求的合理与安全性。同时还可以对发来的请求进行判断,仅接收后台设置的部分路由的请求。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值