diff --git a/auth-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildUser.java b/auth-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildUser.java index 3abdfcb..2771da5 100644 --- a/auth-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildUser.java +++ b/auth-starter/src/main/java/cn/axzo/framework/auth/annotation/PreBuildUser.java @@ -6,6 +6,5 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PreBuildUser { - //todo default - String value(); + String value() default ""; } diff --git a/auth-starter/src/main/java/cn/axzo/framework/auth/domain/UserInfo.java b/auth-starter/src/main/java/cn/axzo/framework/auth/domain/UserInfo.java index 547e3d9..375cc4e 100644 --- a/auth-starter/src/main/java/cn/axzo/framework/auth/domain/UserInfo.java +++ b/auth-starter/src/main/java/cn/axzo/framework/auth/domain/UserInfo.java @@ -1,11 +1,14 @@ package cn.axzo.framework.auth.domain; +import cn.hutool.json.JSONObject; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; +import javax.servlet.http.HttpServletRequest; import java.util.List; +import java.util.Map; @Data @@ -55,4 +58,16 @@ public class UserInfo { private String appVersion; private String token; private String visitTo; + + /** + * 使用http request 设置自定义字段 + * @param request http请求 + */ + public void buildCustomField(HttpServletRequest request) {} + + /** + * 使用用户信息map 设置自定义字段 + * @param userInfo 用户信息 + */ + public void buildCustomField(Map userInfo) {} } diff --git a/auth-starter/src/main/java/cn/axzo/framework/auth/service/BuilderUserInfoAspect.java b/auth-starter/src/main/java/cn/axzo/framework/auth/service/BuilderUserInfoAspect.java index 94b6fe9..053b019 100644 --- a/auth-starter/src/main/java/cn/axzo/framework/auth/service/BuilderUserInfoAspect.java +++ b/auth-starter/src/main/java/cn/axzo/framework/auth/service/BuilderUserInfoAspect.java @@ -44,10 +44,6 @@ public class BuilderUserInfoAspect { public void fillInUserInfoDetail(HttpServletRequest request, ProceedingJoinPoint pjp) { String userJsonInfo = request.getHeader(AopConstants.USER_INFO); - if (StringUtils.isEmpty(userJsonInfo)) { - //没有拿到用户信息这个构建也没有意义了 //todo 做个异常处理 - return; - } //转编码 String userInfo = Base64.decodeStr(userJsonInfo); //请求头获取数据 @@ -64,9 +60,9 @@ public class BuilderUserInfoAspect { Class[] parameterTypes = method.getParameterTypes(); Object[] pjpArgs = pjp.getArgs(); for (int i = 0; i < parameterTypes.length; i++) { - if (parameterTypes[i].isAssignableFrom(UserInfo.class)) { + if (UserInfo.class.isAssignableFrom(parameterTypes[i])) { UserInfo pjpArg = (UserInfo) pjpArgs[i]; - buildUserInfoWithAspect(pjpArg, userInfo); + pjpArg.buildCustomField(request); //塞一些系统参数 pjpArg.setAppVersion(appVersion); pjpArg.setDeviceKind(deviceKind); @@ -75,16 +71,20 @@ public class BuilderUserInfoAspect { pjpArg.setTenantId(tenantId); pjpArg.setVisitTo(visitTo); pjpArg.setToken(authorization); + if (StringUtils.isEmpty(userJsonInfo)) { + //没有拿到用户信息这个构建也没有意义了 //todo 做个异常处理 + return; + } + buildUserInfoWithAspect(pjpArg, userInfo); break; } } } public void buildUserInfoWithAspect(UserInfo userInfo, String userJsonInfo) { - //todo 直接获取用户信息。 Map map = JSONUtil.toBean(userJsonInfo, Map.class); -// Map data = (Map) map.get("data"); //对bean进行封装属性 BeanUtil.fillBeanWithMap(map, userInfo, false); + userInfo.buildCustomField(map); } }