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);