mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-13 02:57:13 +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