From 88f70fe3d4d974b4d036779e6b522cf98ac5797e Mon Sep 17 00:00:00 2001 From: zhouhao Date: Sat, 19 Aug 2017 17:36:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9D=83=E9=99=90merge?= =?UTF-8?q?=E6=97=A0=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../define/AuthorizeDefinition.java | 2 ++ .../basic/aop/AopAuthorizingController.java | 14 ++++++++----- ...ultAopMethodAuthorizeDefinitionParser.java | 20 +++++++++---------- .../DefaultBasicAuthorizeDefinition.java | 4 ++++ .../define/EmptyAuthorizeDefinition.java | 14 ++++++++++--- 5 files changed, 36 insertions(+), 18 deletions(-) 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 index 6acc413ea..9c4f2237b 100644 --- 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 @@ -74,5 +74,7 @@ public interface AuthorizeDefinition { */ Logical getLogical(); + boolean isEmpty(); + DataAccessDefinition getDataAccessDefinition(); } diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/AopAuthorizingController.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/AopAuthorizingController.java index 3950a7c5e..191cbed87 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/AopAuthorizingController.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/AopAuthorizingController.java @@ -30,11 +30,15 @@ public class AopAuthorizingController extends StaticMethodMatcherPointcutAdvisor AuthorizeDefinition definition = aopMethodAuthorizeDefinitionParser.parse(paramContext); if (null != definition) { - AuthorizingContext context = new AuthorizingContext(); - context.setAuthentication(Authentication.current().orElseThrow(UnAuthorizedException::new)); - context.setDefinition(definition); - context.setParamContext(paramContext); - authorizingHandler.handle(context); + Authentication authentication = Authentication.current().orElseThrow(UnAuthorizedException::new); + + if (!definition.isEmpty()) { + AuthorizingContext context = new AuthorizingContext(); + context.setAuthentication(authentication); + context.setDefinition(definition); + context.setParamContext(paramContext); + authorizingHandler.handle(context); + } } return methodInvocation.proceed(); }); diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java index 6544ba909..5a041895e 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/aop/DefaultAopMethodAuthorizeDefinitionParser.java @@ -42,14 +42,13 @@ public class DefaultAopMethodAuthorizeDefinitionParser implements AopMethodAutho AuthorizeDefinition definition = cache.get(paramContext.getMethod()); if (definition != null) return definition instanceof EmptyAuthorizeDefinition ? null : definition; - //使用自定义 - if(!CollectionUtils.isEmpty(parserCustomers)){ - definition=parserCustomers.stream() - .map(customer->customer.parse(paramContext)) + if (!CollectionUtils.isEmpty(parserCustomers)) { + definition = parserCustomers.stream() + .map(customer -> customer.parse(paramContext)) .findAny().orElse(null); - if(definition!=null){ - // cache.put(paramContext.getMethod(), definition); + if (definition != null) { + // cache.put(paramContext.getMethod(), definition); return definition; } } @@ -66,24 +65,25 @@ public class DefaultAopMethodAuthorizeDefinitionParser implements AopMethodAutho return null; } - if (methodAuth != null && methodAuth.ignore()) { + if ((methodAuth != null && methodAuth.ignore()) || (classAuth != null && classAuth.ignore())) { cache.put(paramContext.getMethod(), EmptyAuthorizeDefinition.instance); return null; } - DefaultBasicAuthorizeDefinition authorizeDefinition = new DefaultBasicAuthorizeDefinition(); - authorizeDefinition.put(classAuth); + if (methodAuth == null || !methodAuth.ignore()) + authorizeDefinition.put(classAuth); + authorizeDefinition.put(methodAuth); authorizeDefinition.put(expression); authorizeDefinition.put(classDataAccess); + authorizeDefinition.put(methodDataAccess); cache.put(paramContext.getMethod(), authorizeDefinition); - return authorizeDefinition; } diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/DefaultBasicAuthorizeDefinition.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/DefaultBasicAuthorizeDefinition.java index 10117274e..d59dd094d 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/DefaultBasicAuthorizeDefinition.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/DefaultBasicAuthorizeDefinition.java @@ -80,6 +80,10 @@ public class DefaultBasicAuthorizeDefinition implements AuthorizeDefinition { return logical; } + public boolean isEmpty() { + return permissions.isEmpty() && roles.isEmpty() && user.isEmpty() && script == null && dataAccessDefinition == null; + } + @Override public DataAccessDefinition getDataAccessDefinition() { return dataAccessDefinition; diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/EmptyAuthorizeDefinition.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/EmptyAuthorizeDefinition.java index bdc0df2c8..844097605 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/EmptyAuthorizeDefinition.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/define/EmptyAuthorizeDefinition.java @@ -12,11 +12,14 @@ import java.util.Set; */ public class EmptyAuthorizeDefinition implements AuthorizeDefinition { - public static final EmptyAuthorizeDefinition instance=new EmptyAuthorizeDefinition(); - private EmptyAuthorizeDefinition(){} + public static final EmptyAuthorizeDefinition instance = new EmptyAuthorizeDefinition(); + + private EmptyAuthorizeDefinition() { + } + @Override public int getPriority() { - throw new UnsupportedOperationException(); + throw new UnsupportedOperationException(); } @Override @@ -59,6 +62,11 @@ public class EmptyAuthorizeDefinition implements AuthorizeDefinition { throw new UnsupportedOperationException(); } + @Override + public boolean isEmpty() { + return true; + } + @Override public DataAccessDefinition getDataAccessDefinition() { throw new UnsupportedOperationException();