From 2489c46a7ffe23a95da201a35c40424f2b79dba2 Mon Sep 17 00:00:00 2001 From: 602003139@qq.com <ljh2630734> Date: 星期四, 21 十月 2021 14:44:53 +0800 Subject: [PATCH] 修复在swagger配置类中无法读取到satoken配置文件的问题 --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java | 146 ++++++++++++++++++++++++++---------------------- 1 files changed, 80 insertions(+), 66 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java index 1082ea5..dc7821e 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java @@ -1,66 +1,80 @@ -package com.ruoyi.framework.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; -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 com.ruoyi.common.config.RuoYiConfig; -import com.ruoyi.common.constant.Constants; -import com.ruoyi.framework.interceptor.RepeatSubmitInterceptor; - -/** - * 閫氱敤閰嶇疆 - * - * @author ruoyi - */ -@Configuration -public class ResourcesConfig implements WebMvcConfigurer -{ - @Autowired - private RepeatSubmitInterceptor repeatSubmitInterceptor; - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) - { - /** 鏈湴鏂囦欢涓婁紶璺緞 */ - registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + RuoYiConfig.getProfile() + "/"); - - /** swagger閰嶇疆 */ - registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); - registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); - } - - /** - * 鑷畾涔夋嫤鎴鍒� - */ - @Override - public void addInterceptors(InterceptorRegistry registry) - { - registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**"); - } - - /** - * 璺ㄥ煙閰嶇疆 - */ - @Bean - public CorsFilter corsFilter() - { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - CorsConfiguration config = new CorsConfiguration(); - config.setAllowCredentials(true); - // 璁剧疆璁块棶婧愬湴鍧� - config.addAllowedOrigin("*"); - // 璁剧疆璁块棶婧愯姹傚ご - config.addAllowedHeader("*"); - // 璁剧疆璁块棶婧愯姹傛柟娉� - config.addAllowedMethod("*"); - // 瀵规帴鍙i厤缃法鍩熻缃� - source.registerCorsConfiguration("/**", config); - return new CorsFilter(source); - } -} \ No newline at end of file +package com.ruoyi.framework.config; + +import cn.dev33.satoken.interceptor.SaAnnotationInterceptor; +import cn.dev33.satoken.interceptor.SaRouteInterceptor; +import cn.dev33.satoken.router.SaRouter; +import cn.dev33.satoken.stp.StpUtil; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.framework.config.properties.SecurityProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; +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 java.util.Arrays; +import java.util.Collections; + +/** + * 閫氱敤閰嶇疆 + * + * @author Lion Li + */ +@Configuration +public class ResourcesConfig implements WebMvcConfigurer { + + @Autowired + private SecurityProperties securityProperties; + + // 娉ㄥ唽sa-token鐨勬嫤鎴櫒 + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 娉ㄥ唽璺敱鎷︽埅鍣紝鑷畾涔夐獙璇佽鍒� + registry.addInterceptor(new SaRouteInterceptor((request, response, handler) -> { + // 鐧诲綍楠岃瘉 -- 鎺掗櫎澶氫釜璺緞 + SaRouter.match( + //鑾峰彇鎵�鏈夌殑 + Collections.singletonList("/**"), + //鎺掗櫎涓嬩笉闇�瑕佹嫤鎴殑 + Arrays.asList(securityProperties.getExcludes()), + () -> { + Long userId = SecurityUtils.getUserId(); + if(StringUtils.isNotNull(userId) ) { + long tokenTimeout = StpUtil.getTokenTimeout(); + long tokenActivityTimeout = StpUtil.getTokenActivityTimeout(); + System.out.println("鍓╀綑鏈夋晥鏃堕棿: " + tokenTimeout); + System.out.println("涓存椂鏈夋晥鏃堕棿: " + tokenActivityTimeout); + } + }); + })).addPathPatterns("/**"); + registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**"); + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + } + + /** + * 璺ㄥ煙閰嶇疆 + */ + @Bean + public CorsFilter corsFilter() { + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + CorsConfiguration config = new CorsConfiguration(); + config.setAllowCredentials(true); + // 璁剧疆璁块棶婧愬湴鍧� + config.addAllowedOriginPattern("*"); + // 璁剧疆璁块棶婧愯姹傚ご + config.addAllowedHeader("*"); + // 璁剧疆璁块棶婧愯姹傛柟娉� + config.addAllowedMethod("*"); + // 瀵规帴鍙i厤缃法鍩熻缃� + source.registerCorsConfiguration("/**", config); + return new CorsFilter(source); + } +} -- Gitblit v1.9.3