添加两个hook方法支持Userinfo扩展字段
This commit is contained in:
parent
49017dbb99
commit
3284fb2cc9
@ -6,6 +6,5 @@ import java.lang.annotation.*;
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface PreBuildUser {
|
||||
//todo default
|
||||
String value();
|
||||
String value() default "";
|
||||
}
|
||||
|
||||
@ -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) {}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user