由于需要对用户权限进行认证,判断登录与否,然后设置了全局拦截器,然后测接口的额时候swagger也被拦截了(QAQ)
拦截器不配置拦截路径时可以访问,配置后出现以下情况
两种访问形式都被拦截
解决方式:
点击查看代码
// springmvc配置文件
@Configuration
public class aaa implements WebMvcConfigurer {
@Resource
private CrossOriginInterceptor crossOriginInterceptor;
@Resource
private AuthInterceptor authInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册自己的拦截器,并设置拦截的请求路径
//addPathPatterns为拦截此请求路径的请求
//excludePathPatterns为不拦截此路径的请求
registry.addInterceptor(crossOriginInterceptor)
.addPathPatterns("/**");
registry.addInterceptor(authInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login")
.excludePathPatterns("/fileControl/*")
//放行swagger相关资源
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
}
/**
* 设置静态资源以及目录
下面这个配置其实没加并不影响使用,应该是作用于单体项目需要访问classpath下的静态资源时需要配置的映射路径
本文中的demo使用的是分离式,对于这个似乎不会有什么影响
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("doc.html")
// .addResourceLocations("classpath:/META-INF/resources/");
// registry.addResourceHandler("swagger-ui.html")
// .addResourceLocations("classpath:/META-INF/resources/");
// registry.addResourceHandler("/webjars/**")
// .addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
localhost:8088/swagger-ui.html可以正常显示
而另一个使用了bootstrapUI的打开方式仍然访问受限
在排除路径中加入doc.html即可访问
registry.addInterceptor(authInterceptor)
.excludePathPatterns("/doc.html/**")
然后就有另一个问题了
登录一切正常
测试其他接口时发现被拦截了!
解决方法目前只能先放行对应的接口....
.excludePathPatterns("/music/**")
.excludePathPatterns("/type/**")
解释参考至https://blog.csdn.net/Sophia_0331/article/details/105835465
标签:拦截器,excludePathPatterns,无法访问,html,registry,拦截,swagger From: https://www.cnblogs.com/zdrcgubjo/p/17034852.html