From 4747aa1098d6691e9a2dd3d6d799b07d2094def1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Sat, 20 Jul 2024 17:35:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(core=20security):=20=E9=80=82=E9=85=8D=20s?= =?UTF-8?q?pring=20security=206.3=20=E6=96=B0=E5=A2=9E=20@HasPermisson=20?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用 @HasPermisson 替换 @PreAuthority(xxxx),简化接口上的注解 (cherry picked from commit 448e77607fec651d18bde97e3d5cc6734342e51a) --- .../security/annotation/HasPermission.java | 28 +++++++++++++++++++ .../PigxResourceServerConfiguration.java | 10 +++++++ 2 files changed, 38 insertions(+) create mode 100644 pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/HasPermission.java 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(); + } }