From 7cc6a4d25bc2a4320ec6aaef93d154fa0caf541c Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 11 Aug 2017 18:56:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9D=83=E9=99=90=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=AE=9A=E4=B9=89,=E7=94=A8=E4=BA=8E=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8B=A6=E6=88=AA=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=8E=A7=E5=88=B6,=E4=B8=8D=E5=B1=80=E9=99=90?= =?UTF-8?q?=E4=B8=8E=E6=B3=A8=E8=A7=A3=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorization/annotation/Authorize.java | 1 + .../define/AuthorizeDefinition.java | 32 +++++++++++++++++++ .../define/AuthorizeDefinitionParser.java | 20 ++++++++++++ .../web/authorization/define/Script.java | 27 ++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinition.java create mode 100644 hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinitionParser.java create mode 100644 hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/Script.java diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/annotation/Authorize.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/annotation/Authorize.java index cf573cc72..21eefb7f8 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/annotation/Authorize.java +++ b/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}) diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinition.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinition.java new file mode 100644 index 000000000..271996f9e --- /dev/null +++ b/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 getPermissions(); + + Set getActions(); + + Set getRroles(); + + Set getUser(); + + Script getScript(); + + String getMessage(); + + Logical getLogical(); +} diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinitionParser.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/AuthorizeDefinitionParser.java new file mode 100644 index 000000000..68d328461 --- /dev/null +++ b/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); +} diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/Script.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/Script.java new file mode 100644 index 000000000..ee48beaa0 --- /dev/null +++ b/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: + *
+     *    return auth.hasRole("admin");
+     * 
+ * + * @return 脚本内容 + */ + String getScript(); + +}