美文网首页
处理静态资源问题

处理静态资源问题

作者: 紫雨杰 | 来源:发表于2018-05-15 17:19 被阅读0次

1、/** 代表扫描根目录以及子目录下所有的文件 /* 表示只扫描当前路径

2、如果拦截器中配置的拦截路径是/**,则会把静态资源也拦截了,所以处理方式如下:

   ●  Debug 模式下查看,发现处理静态资源的handler是  ResourceHttpRequestHandler,实现的接口为HttpRequestHandler
   ●  方式一:判断 handler 是不是 ResourceHttpRequestHandler 的一个实例,如果是,则放行,return true;
   ●  方式二:判断 handler 是不是 HttpRequestHandler的一个实例,如果是,则放行,return true;

    @Bean
    public WebMvcConfigurer webMvcConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("/login");
                registry.addViewController("/login.html").setViewName("/login");
                registry.addViewController("/dashboard.html").setViewName("/dashboard");
            }

            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                registry.addInterceptor(new HandlerInterceptorAdapter() {
                    @Override
                    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                                             Object handler) throws Exception {
                        LOGGER.info("RequestURL:{}, handler:{}", request.getRequestURL(), handler.getClass());
                        // 处理静态资源 ResourceHttpRequestHandler HttpRequestHandler
                        if (HttpRequestHandler.class.isInstance(handler)) {
                            return true;
                        }
                        Object loginUser = request.getSession().getAttribute("loginUser");
                        Cookie[] cookies = request.getCookies();
                        LOGGER.info("cookies:{}", Arrays.toString(cookies));
                        if (Objects.isNull(loginUser)) {
                            request.setAttribute("msg", "没有权限请先登陆");
                            request.getRequestDispatcher("/login.html").forward(request, response);
                            return false;
                        }
                        return true;
                    }
                    // /** 代表扫描根目录以及子目录下所有的文件 /* 表示只扫描当前路径
                }).addPathPatterns("/**").excludePathPatterns("/login.html", "/", "/user/login");
            }
        };
    }

相关文章

网友评论

      本文标题:处理静态资源问题

      本文链接:https://www.haomeiwen.com/subject/fsnqlftx.html