springboot2.x使用interceptor之后静态资源文件加载问题

摘要: 在使用spring boot 2.x 的过程中,如果使用了interceptor来做权限拦截,很有可能你会发现原来能正常请求的资源文件css,js,images等都不能用了。如果没有加这个拦截器之前,所有的都是好的。一般在开发过程中,很多人估计都是先开发功能,最后再加权限拦截(当然如果采用第三方权限框架比如shiro等,不存在这问题), 尝试过修改application.properties增加静态资源文件地址,结果没用。最后还是在代码里面配置才生效.

在使用spring boot 2.x 的过程中,如果使用了interceptor来做权限拦截,很有可能你会发现原来能正常请求的资源文件css,js,images等都不能用了。如果没有加这个拦截器之前,所有的都是好的。一般在开发过程中,很多人估计都是先开发功能,最后再加权限拦截(当然如果采用第三方权限框架比如shiro等,不存在这问题), 尝试过修改application.properties增加静态资源文件地址,结果没用。最后还是在代码里面配置才生效.


@Configuration
public class AppConfig extends WebMvcConfigurationSupport {
	
	public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new ClientTokenInterceptor()).addPathPatterns("/server/**").excludePathPatterns("/login/**", "/schedule/collect/info"); 
	}
	
	@Override
    public void addViewControllers(ViewControllerRegistry registry) {
        super.addViewControllers(registry);         
        registry.addViewController("/").setViewName("forward:/login");
    } 
	/*重写这个是重点. 可以根据自己需要增加多个地址.*/
	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/webjars/**", "/images/**", "/css/**", "/js/**", "/fonts/**", "/font-awesome/**")
                .addResourceLocations(
                    "classpath:/META-INF/resources/webjars/",
                    "classpath:/static/mosquitto/"                   
            	);
    }

}


拦截器代码

public class ClientTokenInterceptor implements HandlerInterceptor  {
	
	private Logger logger = LoggerFactory.getLogger(this.getClass());	
	
	
    @SuppressWarnings({ "rawtypes", "unused" })
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {  
    	 //logger.info(request.getRequestURI());
    	 request.setAttribute("startTime", System.currentTimeMillis()); 
    	 Object user = request.getSession().getAttribute("loginUser");
         if (user == null) {
             request.getRequestDispatcher("/login").forward(request, response);
             return false;
         } else {
             return true;
         }        
    }     
    

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)throws Exception {
		long beginTime = (Long)request.getAttribute("startTime");
		long endTime = System.currentTimeMillis();		
		//logger.info("complete url {}, total cost:{} " ,request.getRequestURI(), (endTime - beginTime));
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception {
		
	}
   
}


上一篇: centos下安装pip, psutil容易踩的坑.
下一篇: 编译安装psutil报错test_posix.py', 61, 29, "fmt_map...
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号