-
springboot2拦截器返回false以后无法加载静态资源
项目结构
拦截器代码
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
User user = (User)request.getSession().getAttribute(GlobalConst.USER_SESSION_KEY);
logger.info(request.getRequestURI().toString());
if (user == null) {
response.sendRedirect("/login");
logger.info("请先登录");
return false;
} else {
// 验证权限
String role = user.getRole();
if (!this.hasPermission(handler, role)) {
response.sendError(HttpStatus.FORBIDDEN.value(), "无权限");
return false;
}
}
return true;
}
2.自定义的WebConfigurer
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/")
.excludePathPatterns("/login", "/tologin")
.excludePathPatterns("/recharge/notify").excludePathPatterns("/recharge/rechargeok")
.excludePathPatterns("/verify/getcode");
}
}
3.application.properties
# 静态文件请求匹配方式
spring.mvc.static-path-pattern=/**
# 修改默认的静态寻址资源目录
spring.resources.static-locations=classpath:/static/
未登录时preHandle返回false,静态资源无法加载。
登录后可以加载静态资源;或者把response.sendRedirect("/login");注释掉再把return改为true也可以加载静态资源
遇到这问题很郁闷,找了半天也没找到啥原因