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

处理静态资源问题

作者: 紫雨杰 | 来源:发表于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