From fed63c5607a8db8510f8c7d365fc25917fb63f00 Mon Sep 17 00:00:00 2001 From: TanJ Date: Wed, 29 Mar 2023 11:27:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0context=20info=20Handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/annotation/PreBuildContext.java | 3 +++ .../contextvalidate/ContextInfoHandler.java | 12 ++++++++++++ .../domain/contextvalidate/VerifyContext.java | 18 ++++++++++++++++++ .../auth/service/ContextInfoBuilderAspect.java | 6 +++++- 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java create mode 100644 axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java index 4f84552..41bad3f 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildContext.java @@ -7,10 +7,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import cn.axzo.framework.auth.domain.ContextInfo; +import cn.axzo.framework.auth.domain.contextvalidate.ContextInfoHandler; @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PreBuildContext { Class value() default ContextInfo.class; + + Class[] filter() default {}; } diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java new file mode 100644 index 0000000..41b7f23 --- /dev/null +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/ContextInfoHandler.java @@ -0,0 +1,12 @@ +package cn.axzo.framework.auth.domain.contextvalidate; + +import cn.axzo.framework.auth.domain.ContextInfo; + +/** + * @author tanjie@axzo.cn + * @date 2023/3/29 10:59 + */ +public interface ContextInfoHandler { + + void handler(ContextInfo contextInfo); +} diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java new file mode 100644 index 0000000..7ee3910 --- /dev/null +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/domain/contextvalidate/VerifyContext.java @@ -0,0 +1,18 @@ +package cn.axzo.framework.auth.domain.contextvalidate; + +import cn.axzo.framework.auth.AuthException; +import cn.axzo.framework.auth.domain.ContextInfo; + +/** + * @author tanjie@axzo.cn + * @date 2023/3/29 11:12 + */ +public class VerifyContext implements ContextInfoHandler{ + @Override + public void handler(ContextInfo contextInfo) { + Integer verifiedStatus = contextInfo.getUserInfo().getVerifiedStatus(); + if (2 != verifiedStatus) { + throw new AuthException("该功能需要实名认证之后才可使用"); + } + } +} diff --git a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java index 40de9b8..253ed58 100644 --- a/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java +++ b/axzo-auth-spring-boot-starter/src/main/java/cn/axzo/framework/auth/service/ContextInfoBuilderAspect.java @@ -11,6 +11,7 @@ import cn.axzo.framework.auth.domain.SystemAndDeviceInfo; import cn.axzo.framework.auth.domain.TerminalInfo; import cn.axzo.framework.auth.domain.UserInfo; import cn.axzo.framework.auth.domain.UserInfoMap; +import cn.axzo.framework.auth.domain.contextvalidate.ContextInfoHandler; import cn.axzo.framework.auth.enums.EnvEnum; import cn.azxo.framework.common.logger.logback.PodNamespacePropertyDefiner; import cn.hutool.core.bean.BeanUtil; @@ -124,7 +125,10 @@ public class ContextInfoBuilderAspect { // 定制一些信息的处理 contextInfo.buildCustomInfo(httpRequest, contextInfo.getUserInfoMap()); - + //针对contextInfo拦截。或修改参数等 + for (Class filter : preBuildContext.filter()) { + filter.newInstance().handler(contextInfo); + } // 把ContextInfo放到ThreadLocal中 ContextInfoHolder.set(contextInfo); Object[] args = parseContextInfoAndReturnArgs(httpRequest, pjp, contextInfo);