首页 > 其他分享 >快速入门Interceptor拦截器

快速入门Interceptor拦截器

时间:2025-01-16 10:32:28浏览次数:3  
标签:拦截器 入门 error springframework org import Interceptor servlet public

1.概念

2.执行流程

3.WebConfig配置类

package com.hz.config;

import com.hz.interceptor.LoginCheckInterceptor;
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;

@Configuration//配置类
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private LoginCheckInterceptor loginCheckInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
    }
}

4.LoginCheckInterceptor示例

package com.hz.interceptor;

import com.alibaba.fastjson.JSONObject;
import com.hz.pojo.Result;
import com.hz.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

@Slf4j
@Component
public class LoginCheckInterceptor implements HandlerInterceptor {
    @Override//目标资源方法运行前运行,返回true,放行,返回false,不放行
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //获取请求url
        String url = request.getRequestURL().toString();
        log.info("请求的url: {}",url);

        //判断请求的url中是否包含login
        if(url.contains("login")){
            log.info("登录操作,放行~~~");
            //放行
            return true;
        }

        //获取请求头中的令牌(token)
        String jwt = request.getHeader("token");

        //判断令牌是否存在,如不存在,则返回错误提示信息
        if(!StringUtils.hasLength(jwt)){
            log.info("请求头token为空,返回未登录的信息");
            Result error = Result.error("NOT_LOGIN");
            //手动转换
            //对象 ---> JSON
            String notLogin = JSONObject.toJSONString(error);
            response.getWriter().write(notLogin);
            return false;
        }

        //解析token,如果解析失败,返回错误结果
        try {
            JwtUtils.parseJWT(jwt);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("解析令牌失败,返回未登录的错误信息");
            Result error = Result.error("NOT_LOGIN");
            //手动转换
            //对象 ---> JSON
            String notLogin = JSONObject.toJSONString(error);
            response.getWriter().write(notLogin);
            return false;
        }

        //放行
        log.info("令牌合法,放行~~~");
        return true;

    }

    @Override//目标资源方法运行后运行
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override//视图渲染完毕后运行,最后运行
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

标签:拦截器,入门,error,springframework,org,import,Interceptor,servlet,public
From: https://blog.csdn.net/2301_79690805/article/details/145174799

相关文章

  • Gradio快速入门详细教程
    Gradio是什么?Gradio是一个开源的Python软件包,可以快速为你的机器学习模型、API或任意Python函数构建一个演示或Web应用程序。你可以通过Gradio内置的共享功能在几秒钟内分享你的演示链接。不需要JavaScript、CSS或Web托管经验!只需几行Python代码即可创建你......
  • 1.C++基础入门
    C++基础入门1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目​ VisualStudio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添......
  • 小白5分钟入门蓝桥杯比赛
    蓝桥杯的比赛模式是限时四小时,参赛者需要在规定时间内完成十道题目。题目类型包括填空题和编程题。比赛采用OI(OnlineJudge)赛制,即使编程题的答案不完全正确,只要符合测试样例,也能得分,允许暴力解题,因此也被称为“暴力杯”或“O钱杯。官网有比赛的详细细节信息,一定要码住!连接高......
  • 【快速入门|文末福利】运筹学|初识线性规划(一条逻辑线,只需初中数学基础)
    导学问题/回忆自测三个核心问题“线性”为何?何谓“标准”?如何“化归”(把一般的线性规划问题转化为标准的线性规划问题)提示字面意思,在三个要素、两个关系之间对三个要素的要求“大”、“大”、“等”反转(乘以-1)/补齐/“分身”逻辑线索(逻辑线索中,发现有不熟悉的名词没关系,......
  • 前端开发之HTML入门
    首先我们来介绍一下HTML( 超文本标记语言)是构建网页和Web应用程序的标准标记语言。它由一系列元素和标签组成,这些元素和标签用于定义网页的结构和内容。HTML能够嵌入文本、图像、链接、视频和其他多媒体元素,使用户能够通过浏览器访问和交互。主要作用结构化内容:HTML提供了......
  • Python文档生成利器 - Sphinx入门指南
    目录一、安装Sphinx二、创建Sphinx项目初始化项目项目结构三、配置Sphinx基础配置扩展配置自动文档生成四、构建文档五、实战案例配置conf.py设置index.rst创建modules.rst编写Python代码构建文档六、进一步定制和优化1.使用自定义主题2.添加自定义CSS和Ja......
  • 2025最新版CISP认证超详细报考指南,零基础入门到精通,收藏这一篇就够了_cisp考试报名
    CISP系列认证培训体系是中国信息安全测评中心依据中编办要求开展的信息安全专业人员权威资质认定,包括:CISP注册信息安全专业人员、CISD注册信息安全开发人员、CISP-DSG注册数据安全治理专业人员、CISP-PTE注册渗透测试工程师、CISP-PTS注册渗透测试专家、CISP-IRE注册应急响......
  • CISP是什么?零基础入门到精通,收藏这篇就够了_注册信息安全专业人员(cisp)
    CISP是什么?注册信息安全专业人员(CertifiedInformationSecurityProfessional,简称“CISP"),中国信息安全测评中心依据中编办赋予的职能,建立和发展的一整套完整的信息安全保障人才培训体系。CISP证书是国家对信息安全专业人员能力的最高认可。CISP培训对象为信息安全企业、......
  • 【网络安全渗透测试零基础入门】一文带你0基础挖到逻辑漏洞(非常详细),轻松成为朋友眼中
    前言这是七海给粉丝盆友们整理的网络安全渗透测试入门阶段逻辑漏洞渗透与防御教程本文主要讲解如何从零基础带你挖到逻辑漏洞喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。逻辑漏洞概述由于程序逻辑不严谨或逻辑太过复杂,导致一些逻辑分支不能正常处理或......
  • 通用输入/输出接口(GPIO)入门指南:从原理到实践
    1GPIO基本概念与内部结构STM32的GPIO(通用输入输出端口)是最基本和常用的外设之一。每个GPIO端口包含16个可配置的I/O引脚,这些引脚可以独立编程为输入、输出或复用功能。每个引脚都可以配置为上拉、下拉或浮空状态,并且可以选择推挽或开漏输出模式。GPIO内部结构的核心组......