添加两个hook方法支持Userinfo扩展字段
This commit is contained in:
parent
49017dbb99
commit
3284fb2cc9
@ -6,6 +6,5 @@ import java.lang.annotation.*;
|
|||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Documented
|
@Documented
|
||||||
public @interface PreBuildUser {
|
public @interface PreBuildUser {
|
||||||
//todo default
|
String value() default "";
|
||||||
String value();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
package cn.axzo.framework.auth.domain;
|
package cn.axzo.framework.auth.domain;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -55,4 +58,16 @@ public class UserInfo {
|
|||||||
private String appVersion;
|
private String appVersion;
|
||||||
private String token;
|
private String token;
|
||||||
private String visitTo;
|
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) {
|
public void fillInUserInfoDetail(HttpServletRequest request, ProceedingJoinPoint pjp) {
|
||||||
String userJsonInfo = request.getHeader(AopConstants.USER_INFO);
|
String userJsonInfo = request.getHeader(AopConstants.USER_INFO);
|
||||||
if (StringUtils.isEmpty(userJsonInfo)) {
|
|
||||||
//没有拿到用户信息这个构建也没有意义了 //todo 做个异常处理
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//转编码
|
//转编码
|
||||||
String userInfo = Base64.decodeStr(userJsonInfo);
|
String userInfo = Base64.decodeStr(userJsonInfo);
|
||||||
//请求头获取数据
|
//请求头获取数据
|
||||||
@ -64,9 +60,9 @@ public class BuilderUserInfoAspect {
|
|||||||
Class<?>[] parameterTypes = method.getParameterTypes();
|
Class<?>[] parameterTypes = method.getParameterTypes();
|
||||||
Object[] pjpArgs = pjp.getArgs();
|
Object[] pjpArgs = pjp.getArgs();
|
||||||
for (int i = 0; i < parameterTypes.length; i++) {
|
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];
|
UserInfo pjpArg = (UserInfo) pjpArgs[i];
|
||||||
buildUserInfoWithAspect(pjpArg, userInfo);
|
pjpArg.buildCustomField(request);
|
||||||
//塞一些系统参数
|
//塞一些系统参数
|
||||||
pjpArg.setAppVersion(appVersion);
|
pjpArg.setAppVersion(appVersion);
|
||||||
pjpArg.setDeviceKind(deviceKind);
|
pjpArg.setDeviceKind(deviceKind);
|
||||||
@ -75,16 +71,20 @@ public class BuilderUserInfoAspect {
|
|||||||
pjpArg.setTenantId(tenantId);
|
pjpArg.setTenantId(tenantId);
|
||||||
pjpArg.setVisitTo(visitTo);
|
pjpArg.setVisitTo(visitTo);
|
||||||
pjpArg.setToken(authorization);
|
pjpArg.setToken(authorization);
|
||||||
|
if (StringUtils.isEmpty(userJsonInfo)) {
|
||||||
|
//没有拿到用户信息这个构建也没有意义了 //todo 做个异常处理
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
buildUserInfoWithAspect(pjpArg, userInfo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void buildUserInfoWithAspect(UserInfo userInfo, String userJsonInfo) {
|
public void buildUserInfoWithAspect(UserInfo userInfo, String userJsonInfo) {
|
||||||
//todo 直接获取用户信息。
|
|
||||||
Map map = JSONUtil.toBean(userJsonInfo, Map.class);
|
Map map = JSONUtil.toBean(userJsonInfo, Map.class);
|
||||||
// Map data = (Map) map.get("data");
|
|
||||||
//对bean进行封装属性
|
//对bean进行封装属性
|
||||||
BeanUtil.fillBeanWithMap(map, userInfo, false);
|
BeanUtil.fillBeanWithMap(map, userInfo, false);
|
||||||
|
userInfo.buildCustomField(map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user