package com.zbkj.admin.config; import com.zbkj.admin.filter.ResponseFilter; import com.zbkj.common.config.CarManagerConfig; import com.zbkj.common.constants.Constants; import com.zbkj.common.interceptor.SwaggerInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.handler.MappedInterceptor; /** * token验证拦截器 */ @Configuration public class WebConfig implements WebMvcConfigurer { // 这里使用一个Bean为的是可以在拦截器中自由注入,也可以在拦截器中使用SpringUtil.getBean 获取 // 但是觉得这样更优雅 @Autowired CarManagerConfig carManagerConfig; @Bean public ResponseFilter responseFilter(){ return new ResponseFilter(); } @Value("${swagger.basic.username}") private String username; @Value("${swagger.basic.password}") private String password; @Value("${swagger.basic.check}") private Boolean check; @Override public void addInterceptors(InterceptorRegistry registry) { //添加token拦截器 //addPathPatterns添加需要拦截的命名空间; //excludePathPatterns添加排除拦截命名空间 // //后台token拦截 // registry.addInterceptor(adminTokenInterceptor()). // addPathPatterns("/api/admin/**"). // excludePathPatterns("/api/admin/validate/**"). // excludePathPatterns("/api/admin/login"). // excludePathPatterns("/api/admin/logout"). // excludePathPatterns("/api/admin/getLoginPic"). // excludePathPatterns("/api/admin/wechat/config"). // excludePathPatterns("/api/admin/authorize/login"). // excludePathPatterns("/api/admin/payment/callback/**"). //// excludePathPatterns("/api/admin/system/role/menu"). // excludePathPatterns("/api/admin/system/role/info"). // excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); // // //后台权限规则 // registry.addInterceptor(adminAuthInterceptor()). // addPathPatterns("/api/admin/**"). // excludePathPatterns("/api/admin/validate/**"). // excludePathPatterns("/api/admin/login"). // excludePathPatterns("/api/admin/logout"). // excludePathPatterns("/api/admin/getLoginPic"). // excludePathPatterns("/api/admin/payment/callback/**"). // excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:/static/"); registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); /** 本地文件上传路径 */ registry.addResourceHandler(Constants.UPLOAD_TYPE_IMAGE + "/**") .addResourceLocations("file:" + carManagerConfig.getImagePath() + "/" + Constants.UPLOAD_TYPE_IMAGE + "/"); } @Bean public FilterRegistrationBean filterRegister() { //注册过滤器 FilterRegistrationBean registration = new FilterRegistrationBean(responseFilter()); // 仅仅api前缀的请求才会拦截 registration.addUrlPatterns("/api/admin/*"); registration.addUrlPatterns("/api/front/*"); return registration; } /* 必须在此处配置拦截器,要不然拦不到swagger的静态资源 */ @Bean @ConditionalOnProperty(name = "swagger.basic.enable", havingValue = "true") public MappedInterceptor getMappedInterceptor() { return new MappedInterceptor(new String[]{"/doc.html", "/webjars/**"}, new SwaggerInterceptor(username, password, check)); } }