SpringBoot2.x添加拦截器后Swagger无法访问

版权声明:转载请注明出处:https://blog.csdn.net/strugglein https://blog.csdn.net/Strugglein/article/details/82755039

在没有添加拦截器的时候访问是ok的,后来添加了拦截器就报404了,然后去网上搜寻了一波,现在把操作内容记录下来

先来下问题
在这里插入图片描述

解决方法

package com.zyc.Interceptor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;


/**
 * @Description: 静态资源配置 拦截器添加
 * @author zhaopeng
 * @email [email protected]
 */

@Configuration
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurationSupport {

    @Bean
    public HandlerInterceptor getAccessInterceptor() {
        return new AccessInterceptor();
    }


    /**
     * 配置静态资源
     */
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/templates/");
        /*放行swagger*/
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }

    public void addInterceptors(InterceptorRegistry registry) {
        //addPathPatterns 用于添加拦截规则
        //excludePathPatterns 用于排除拦截
        registry.addInterceptor(getAccessInterceptor()).addPathPatterns("/**")
                /*放行swagger*/
                .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
              /*  .excludePathPatterns("/hlladmin/login") //登录页
                .excludePathPatterns("/hlladmin/user/sendEmail") //发送邮箱
                .excludePathPatterns("/hlladmin/user/register") //用户注册
                .excludePathPatterns("/hlladmin/user/login"); //用户登录*/
        super.addInterceptors(registry);
    }
}

加注释放行swagger下方的代码就是对swagger进行排除拦截的内容
还有就是网上有些地方说的是在上面加,或者下面加就可以解决的,可能业务场景不同,经过测试,我还是两个地方都加了

好的到这里本篇文章就先到此了,创作不易,如果那里有不合适的地方还请大家多多指教,写这篇博的目的主要就是为了方便自己以后的一个回忆和朋友学习时的一个参考,希望为大家可以带来帮助 ~ ~&

虚心的去学习,自信的去工作~

猜你喜欢

转载自blog.csdn.net/Strugglein/article/details/82755039