Browse Source

增加权限控制定义,用于实现自定义拦截权限控制,不局限与注解方式

zhouhao 7 năm trước cách đây
mục cha
commit
7cc6a4d25b

+ 1 - 0
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/annotation/Authorize.java

@@ -29,6 +29,7 @@ import java.lang.annotation.*;
  *
  * @author zhouhao
  * @see org.hswebframework.web.authorization.Authentication
+ * @see org.hswebframework.web.authorization.define.AuthorizeDefinition
  * @since 3.0
  */
 @Target({ElementType.TYPE, ElementType.METHOD})

+ 32 - 0
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinition.java

@@ -0,0 +1,32 @@
+package org.hswebframework.web.authorization.define;
+
+import org.hswebframework.web.authorization.annotation.Logical;
+
+import java.util.Set;
+
+/**
+ * 权限控制定义,定义权限控制的方式
+ *
+ * @author zhouhao
+ * @see AuthorizeDefinitionParser
+ * @since 3.0
+ */
+public interface AuthorizeDefinition {
+    int getPriority();
+
+    boolean isDataAccessControll();
+
+    Set<String> getPermissions();
+
+    Set<String> getActions();
+
+    Set<String> getRroles();
+
+    Set<String> getUser();
+
+    Script getScript();
+
+    String getMessage();
+
+    Logical getLogical();
+}

+ 20 - 0
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinitionParser.java

@@ -0,0 +1,20 @@
+package org.hswebframework.web.authorization.define;
+
+import org.hswebframework.web.boost.aop.context.MethodInterceptorParamContext;
+
+/**
+ * 权限控制定义解析器,用于解析被拦截的请求是否需要进行权限控制,以及权限控制的方式
+ *
+ * @author zhouhao
+ * @see AuthorizeDefinition
+ */
+public interface AuthorizeDefinitionParser {
+
+    /**
+     * 解析权限控制定义
+     *
+     * @param paramContext 被拦截的方法上下文
+     * @return 权限控制定义, 如果不进行权限控制则返回{@code null}
+     */
+    AuthorizeDefinition parse(MethodInterceptorParamContext paramContext);
+}

+ 27 - 0
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/Script.java

@@ -0,0 +1,27 @@
+package org.hswebframework.web.authorization.define;
+
+import java.util.Map;
+
+/**
+ * 使用脚本进行权限控制
+ *
+ * @author zhouhao
+ * @since 3.0
+ */
+public interface Script {
+    /**
+     * @return 脚本语言, js,groovy,spel等
+     */
+    String getLanguage();
+
+    /**
+     * js:
+     * <pre>
+     *    return auth.hasRole("admin");
+     * </pre>
+     *
+     * @return 脚本内容
+     */
+    String getScript();
+
+}