八阿哥别走 2020-01-15 01:01 采纳率: 100%
浏览 651
已采纳

springboot2拦截器返回false后静态资源无法访问

  1. 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也可以加载静态资源

遇到这问题很郁闷,找了半天也没找到啥原因

  • 写回答

2条回答

  • Amo_lt 2020-01-15 09:36
    关注

    你的静态资源放到哪里?static下面吗?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突