mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	fix: 修复缓存 CRUD API 权限前缀偶发性缺失元素的问题
This commit is contained in:
		| @@ -47,6 +47,7 @@ import top.continew.starter.core.util.validation.CheckUtils; | |||||||
| import top.continew.starter.extension.crud.annotation.CrudRequestMapping; | import top.continew.starter.extension.crud.annotation.CrudRequestMapping; | ||||||
|  |  | ||||||
| import java.util.*; | import java.util.*; | ||||||
|  | import java.util.stream.Stream; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Sa-Token 配置 |  * Sa-Token 配置 | ||||||
| @@ -110,7 +111,7 @@ public class SaTokenConfiguration { | |||||||
|     @EventListener(ApplicationReadyEvent.class) |     @EventListener(ApplicationReadyEvent.class) | ||||||
|     public void configureSaTokenExcludes() { |     public void configureSaTokenExcludes() { | ||||||
|         String[] beanNames = applicationContext.getBeanDefinitionNames(); |         String[] beanNames = applicationContext.getBeanDefinitionNames(); | ||||||
|         List<String> additionalExcludes = Arrays.stream(beanNames).parallel().map(beanName -> { |         List<String> additionalExcludes = Arrays.stream(beanNames).map(beanName -> { | ||||||
|             Object bean = applicationContext.getBean(beanName); |             Object bean = applicationContext.getBean(beanName); | ||||||
|             Class<?> clazz = bean.getClass(); |             Class<?> clazz = bean.getClass(); | ||||||
|             if (AopUtils.isAopProxy(bean)) { |             if (AopUtils.isAopProxy(bean)) { | ||||||
| @@ -130,10 +131,10 @@ public class SaTokenConfiguration { | |||||||
|         }).filter(Objects::nonNull).toList(); |         }).filter(Objects::nonNull).toList(); | ||||||
|         if (!additionalExcludes.isEmpty()) { |         if (!additionalExcludes.isEmpty()) { | ||||||
|             // 合并现有的 excludes 和新扫描到的 |             // 合并现有的 excludes 和新扫描到的 | ||||||
|             List<String> allExcludes = new ArrayList<>(Arrays.asList(properties.getSecurity().getExcludes())); |             String[] existingExcludes = Optional.ofNullable(properties.getSecurity().getExcludes()).orElse(new String[0]); | ||||||
|             allExcludes.addAll(additionalExcludes); |             String[] combinedExcludes = Stream.concat(Arrays.stream(existingExcludes), additionalExcludes.stream()) | ||||||
|             // 转回数组 |                                               .toArray(String[]::new); | ||||||
|             properties.getSecurity().setExcludes(allExcludes.toArray(new String[0])); |             properties.getSecurity().setExcludes(combinedExcludes); | ||||||
|         } |         } | ||||||
|         log.debug("缓存 CRUD API 权限前缀完成:{}", CrudApiPermissionPrefixCache.getAll().values()); |         log.debug("缓存 CRUD API 权限前缀完成:{}", CrudApiPermissionPrefixCache.getAll().values()); | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user