最近在开发中,springboot搭建的web项目突然就访问不了controller,在自己本地测试显示localhost无法访问,没有权限。
问题所在:经过一番查找发现,原来是同事在基础的项目中添加了一个 HandlerInterceptor,该类主要作用是验证请求头(相当于一个授权安全验证),不通过返回的是 HttpStatus.FORBIDDEN(403,也就是禁止访问)。导致我上层项目正常启动,请求的地址也能在日志中打出来,但就是没办法访问方法。
解决办法:在上层项目将相关的东西排除掉。
// 排除办法
@ComponentScan(basePackages = {"***"}, excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,
value = {Interceptor.class, WebConfig.class})})
public class TestApplication{
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
type值:
org.springframework.context.annotation.FilterType
过滤器类型 | 描述 |
---|---|
annotation | 过滤器扫描使用注解所标注的那些类 |
ASSIGNABLE_TYPE | 过滤器扫描派生于class属性所指定类型的那些类 |
aspectj | 过滤器扫描AspectJ表达式所匹配的那些类 |
custom | 使用自定义的org.springframework.core.type.TypeFliter实现类 |
regex | 指定正则表示式所匹配的那些类 |