【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 信息进行验证,比起自定义注解,这种方式更加简单,方便,我们只需要关注拦截哪些路径,不拦截哪些路径即可

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 蓝牙4.2对比蓝牙5.0_蓝牙 5.0 4.0区别

    蓝牙4.2对比蓝牙5.0_蓝牙 5.0 4.0区别目前市场上依然有大量蓝牙4.0/3.0/2.1/2.1+EDR产品存在,从自拍器,遥控器到各种智能设备,因其功能够用,价格低廉,受到快消类产品客户的亲昵,而工业类,汽车类应用,BT4.0的产品依然当道,究其原因,稳定,够用,供货好,当然价格不贵。但如果说蓝牙5之前蓝牙解决的是单点连接的可穿戴式设备与手机互联的问题,那么蓝牙5就是解决多点互联IoT物联网的问题。

    2022年9月8日
    0
  • docker重启后镜像消失_u盘安装iso原版镜像

    docker重启后镜像消失_u盘安装iso原版镜像一、问题引入根据镜像启动容器,执行命令如下:dockerrun–namemycentos-dcentos,通过dockerps查看正在运行中容器,缺找不到mycentos容器。再次通过dockerps-a查看发现,mycentos容器已经处于停止状态了。二、原因Docker容器后台运行,就必须有一个前台进程.容器运行的命令如果不是那些一直挂起的命令(eg.运行…

    2022年9月22日
    0
  • pycharm py文件运行后停止按钮变成了灰色[通俗易懂]

    pycharm py文件运行后停止按钮变成了灰色[通俗易懂]这两天被这个问题折磨得要死,把pycharm卸载了还是没解决,后来终于在一篇博客中看见,然后终于解决了问题界面如下:1.每次运行后都会跳出一个pythonconsole,并且前面还会显示一大堆奇怪信息:importsys;print(‘Python%son%s’%(sys.version,sys.platform))sys.path.extend2.右上角…

    2022年8月26日
    5
  • pycharm2021.11.2激活码_在线激活「建议收藏」

    (pycharm2021.11.2激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9K2BT69C4S-eyJsaWNlbnNlSWQiOi…

    2022年3月28日
    56
  • resnet网络结构示意图_知识网络结构图

    resnet网络结构示意图_知识网络结构图注释:7x7conv,3->64,/2表示7×7大小的卷积核,3、64表示输入输出通道,/2表示输出为原来的1/2。x2表示类似的结构还有两个。

    2022年10月7日
    0
  • mysql导入文件出现Data truncated for column ‘xxx’ at row 1的原因

    mysql导入文件出现Data truncated for column ‘xxx’ at row 1的原因

    2021年10月21日
    127

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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