diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/HasPermission.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/HasPermission.java new file mode 100644 index 000000000..a5039a5d1 --- /dev/null +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/HasPermission.java @@ -0,0 +1,28 @@ +package com.pig4cloud.pigx.common.security.annotation; + +import org.springframework.security.access.prepost.PreAuthorize; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 判断是否有权限 + * + * @author lengleng + * @date 2024/07/15 + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@PreAuthorize("@pms.hasPermission('{value}'.split(','))") +public @interface HasPermission { + + /** + * 权限字符串 + * + * @return {@link String[] } + */ + String[] value(); + +} diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java index 6dba398f5..fdd4f1569 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerConfiguration.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; +import org.springframework.security.authorization.method.PrePostTemplateDefaults; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -70,4 +71,13 @@ public class PigxResourceServerConfiguration { return http.build(); } + /** + * 支持自定义权限表达式 + * + * @return {@link PrePostTemplateDefaults } + */ + @Bean + PrePostTemplateDefaults prePostTemplateDefaults() { + return new PrePostTemplateDefaults(); + } }