zoukankan      html  css  js  c++  java
  • Springboot 拦截器的配置

    在Springboot项目中添加拦截器,分两步:

    1:创建一个拦截器类

    2:配置拦截器

     

    以上步骤完成就可以使用了,下面来添加拦截器:

    1:创建一个拦截器类 MyInteceptor 继承 HandlerInterceptor 接口,然后实现它的几个方法,如下:

    package com.yyy.config;
    
    import com.yyy.pojo.User;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @auther YueYangyang
     * @date 2020/6/25 21:28
     */
    @Slf4j
    public class MyInteceptor implements HandlerInterceptor {
        @Autowired
        private RedisTemplate redisTemplate;
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            log.debug("这是MyInteceptor的preHandle方法。");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            log.debug("这是MyInteceptor的postHandle方法。");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            log.debug("这是MyInteceptor的afterCompletion方法。");
        }
    }

     

    以上三个重写方法中 preHandle 方法就是拦截的时候,会进的方法,此时就写一个拦截器是不行的,那么什么时候拦截呢,那就要再写一个配置类,告诉拦截器什么时候拦截、什么时候不拦截

     

    2:配置拦截器  我们建一个配置类 MvcConfig 继承 WebMvcConfigurer接口,先将我们上一步写的拦截器注入到 bean 中,然后重写它的 addInterceptors 方法,代码如下:

    package com.yyy.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    /**
     * @auther YueYangyang
     * @date 2020/6/25 21:30
     */
    @Configuration
    public class MvcConfig implements WebMvcConfigurer {
        //注入bean
        @Bean
        public MyInteceptor myInteceptor(){
            return new MyInteceptor();
        }
    
        //重写拦截器
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //excludePathPatterns  是放行
            //addPathPatterns
            registry.addInterceptor(myInteceptor()).addPathPatterns("/user/**","/main/**").excludePathPatterns("/login/**","/user/loginIn");
        }
    
    }

    此处要注意的是 注入bean 的方法名  要与重写方法中的标红位置名一致。

    到这里 我们就已经写好了拦截器了,其中配置类中 addPathPatterns 中的内容是,需要拦截的方法路径excludePathPatterns 中的内容是需要放行的路径

  • 相关阅读:
    tshark的命令使用
    svn log查看自己提交的记录
    账号安全 syyh
    Trivy 容器镜像扫描工具学习 syyh
    《关键对话》脑图整理 syyh
    Grafana 任意文件读取漏洞 (CVE202143798)学习 syyh
    容器安全管理 syyh
    【Sass/SCSS】我花4小时整理了的Sass的函数
    【JavaScript使用技巧】三个截取字符串中的子串,你用的哪个
    【SVG】为了前端页面的美丽,我选择学习SVG
  • 原文地址:https://www.cnblogs.com/yyy116008/p/13307943.html
Copyright © 2011-2022 走看看