【SpringBoot】46、SpringBoot中整合JWT实现Token验证(拦截器篇)

【SpringBoot】46、SpringBoot中整合JWT实现Token验证(拦截器篇)前言上篇文章我们已经实现了使用自定义注解验证token信息,这样我们就会发现,当我们需要验证的接口较多时,我们需要每个方法上面都加上@JwtToken这个注解,也是非常麻烦,本片文章,我们继续使用拦截器来实现token信息的验证如果对整合JWT还不熟悉的朋友,可以先看看我的这篇博客:【SpringBoot】四十四、SpringBoot中整合JWT实现Token验证(整合篇)如果对自定义注解验证token信息感兴趣的朋友,可以看看我的这篇博客:【SpringBoot】四十五、Spr

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言
上篇文章我们已经实现了使用自定义注解验证 token 信息,这样我们就会发现,当我们需要验证的接口较多时,我们需要每个方法上面都加上 @JwtToken 这个注解,也是非常麻烦, 本片文章,我们继续使用拦截器来实现 token 信息的验证

如果对整合 JWT 还不熟悉的朋友,可以先看看我的这篇博客:【SpringBoot】四十四、SpringBoot中整合JWT实现Token验证(整合篇)

如果对自定义注解验证 token 信息感兴趣的朋友,可以看看我的这篇博客:【SpringBoot】四十五、SpringBoot中整合JWT实现Token验证(注解篇)

1、自定义拦截器

package com.asurplus.common.config;

import com.asurplus.common.jwt.JwtUtil;
import com.asurplus.common.utils.ResponseResult;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class JwtTokenInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    	// 在拦截器中,如果请求为OPTIONS请求,则返回true,表示可以正常访问,然后就会收到真正的GET/POST请求
    	if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
		    System.out.println("OPTIONS请求,放行");
		    return true;
		}
        // 验证token
        ResponseResult res = JwtUtil.verity();
        if (200 == res.getCode()) {
            return true;
        }
        // 验证不通过,返回401,表示用户未登录
        response.setStatus(401);
        return false;
    }

}

我们通过前面的文章已经整合的 JWT 验证 token 信息,如果验证成功,返回 true,如果验证失败,则通过改变 HttpServletResponse 对象的 code 为 401,表示用户未登录,返回 false,此时方法会直接结束,不会进入到下一步

2、注解拦截器

package com.asurplus.common.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Autowired
    private JwtTokenInterceptor authorizationInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册拦截规则
        InterceptorRegistration ir = registry.addInterceptor(authorizationInterceptor);
        // 拦截路径,开放api请求的路径都拦截
        ir.addPathPatterns("/api/**");
        // 不拦截路径,如:注册、登录、忘记密码等
        ir.excludePathPatterns("/api/userInfo/doRegister", "/api/userInfo/doLoginByAccount", "/api/userInfo/doLoginByPhone", "/api/userInfo/updatePasswordForget");
    }
}

我们通过注册我们自定义的拦截器,设置了拦截路径,以 api 开头的路径都会被验证 token 信息
我们还设置了不拦截路径,例如:注册、登录、忘记密码等不需要用户登录就能直接请求的,就不需要进行验证 token 信息

此时,我们就完成了自定义拦截器对 token 信息进行验证,比起自定义注解,这种方式更加简单,方便,我们只需要关注拦截哪些路径,不拦截哪些路径即可

如您在阅读中发现不足,欢迎留言!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160957.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Iocomp VC2017 – 5.12版本Crack

    Iocomp VC2017 – 5.12版本CrackIocomp工业仪表盘控件包(.net版)包括多种用来创建专业的仪表和测量、工业控制、工业监控等相关的应用程序的控件包,包括仪表盘控件,开关控件,实时曲线控件,LED灯控件等等。所有的控件均为100%托管代码,Ω578867473知道支持Microsoft/Borland/CodeGear/Embarcadero等不同的开发环境。包括三个不同的版本,终极版(ultimate),专业版(ProPack)和曲线版(PlotPack.)控件包中的所有控件都是面向对象的设计,并.

  • 如何在html添加css样式表,网页中添加CSS样式表的四种方式

    如何在html添加css样式表,网页中添加CSS样式表的四种方式本文向大家描述一下网页中添加CSS样式表的四种方式,首先让我们来看一下CSS样式表文件的优势,主要体现在两个方面,请看下文详细介绍。CSS样式表文件的优势表现在两个方面:***,简化了网页的格式代码,外部的CSS样式表还会被浏览器保存在缓存里,加快了下载显示的速度,也减少了需要上传的代码数量(因为重复设置的格式将被只保存一次)。第二,只要修改保存着网站格式的CSS样式表文件就可以改变整个站点的风格…

  • Virtualenv介绍、基本使用及在Pycharm下配置环境[通俗易懂]

    Virtualenv介绍、基本使用及在Pycharm下配置环境[通俗易懂]Virtualenv是一个创建独立Python运行环境的工具,主要解决Python软件开发过程中版本和依赖性问题。本文对Virtualenv做了简单的介绍、如何建立虚拟环境以及如何在Pycharm下配置Virtualenv环境

  • 深入浅出讲解 ElasticSearch的安装与使用【建议收藏】

    深入浅出讲解 ElasticSearch的安装与使用【建议收藏】

  • 7-1 正整数A+B > 题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。「建议收藏」

    7-1 正整数A+B > 题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。「建议收藏」7-1 正整数A+B题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。输入格式:输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个…

  • Windows上安装MySQL

    Windows上安装MySQLMySQL针对不同的用户提供了2中不同的版本:MySQLCommunityServer:社区版。由MySQL开源社区开发者和爱好者提供技术支持,对开发者开放源代码并提供免费下载。MySQLEnterpriseServer:企业版。包括最全面的高级功能和管理工具,不过对用户收费。下面讲到的MySQL安装都是以免费开源的社区版为基础。打开MySQL数据库官网的下载地址http:/

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号