diff --git a/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java b/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java index 7d1a110..7f732ac 100644 --- a/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java +++ b/tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java @@ -20,6 +20,7 @@ import com.tduck.cloud.account.service.UserAuthorizeService; import com.tduck.cloud.account.service.UserService; import com.tduck.cloud.account.util.JwtUtils; import com.tduck.cloud.account.util.NameUtils; +import com.tduck.cloud.account.util.LoginUserUtil; import com.tduck.cloud.account.vo.LoginUserVO; import com.tduck.cloud.common.util.RedisUtils; import com.tduck.cloud.common.util.Result; @@ -115,7 +116,12 @@ public class UserServiceImpl extends ServiceImpl impleme userEntity.setLastLoginTime(LocalDateTime.now()); this.updateById(userEntity); String token = jwtUtils.generateToken(userEntity.getId()); - return new LoginUserVO(userEntity.getAvatar(), userEntity.getName(), token); + //获取当前用户的客户Id及用户Id + LoginUserVO loginUserVO = LoginUserUtil.get(); + if (loginUserVO == null){ + loginUserVO = new LoginUserVO(); + } + return new LoginUserVO(userEntity.getAvatar(), userEntity.getName(), token, loginUserVO.getCustomerId(), loginUserVO.getUserId()); } @Override diff --git a/tduck-account/src/main/java/com/tduck/cloud/account/util/LoginUserUtil.java b/tduck-account/src/main/java/com/tduck/cloud/account/util/LoginUserUtil.java new file mode 100644 index 0000000..df469db --- /dev/null +++ b/tduck-account/src/main/java/com/tduck/cloud/account/util/LoginUserUtil.java @@ -0,0 +1,27 @@ +package com.tduck.cloud.account.util; + +import com.tduck.cloud.account.vo.LoginUserVO; + +/** + * desc: 用户信息ThreadLocal 暂时只有用户Id和customerId + * + * @author: LiuJanJun + * @date: 2021/9/15 1:26 下午 + * @version: 1.0 + */ +public class LoginUserUtil { + private static ThreadLocal userThread = new ThreadLocal<>(); + + public static void set(LoginUserVO user){ + userThread.set(user); + } + + public static LoginUserVO get(){ + return userThread.get(); + } + + //防止内存泄漏 + public static void remove(){ + userThread.remove(); + } +} diff --git a/tduck-account/src/main/java/com/tduck/cloud/account/vo/LoginUserVO.java b/tduck-account/src/main/java/com/tduck/cloud/account/vo/LoginUserVO.java index 3b6cbe7..1cb56d5 100644 --- a/tduck-account/src/main/java/com/tduck/cloud/account/vo/LoginUserVO.java +++ b/tduck-account/src/main/java/com/tduck/cloud/account/vo/LoginUserVO.java @@ -26,4 +26,15 @@ public class LoginUserVO { * token */ private String token; + + /** + * 客户Id + */ + private String customerId; + + /** + * 用户Id + */ + private String userId; + } diff --git a/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java b/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java index ca761f0..51c1790 100644 --- a/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java +++ b/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java @@ -1,7 +1,10 @@ package com.tduck.cloud.api.web.interceptor; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.tduck.cloud.account.util.JwtUtils; +import com.tduck.cloud.account.util.LoginUserUtil; +import com.tduck.cloud.account.vo.LoginUserVO; import com.tduck.cloud.api.annotation.Login; import com.tduck.cloud.api.exception.AuthorizationException; import com.tduck.cloud.common.constant.CommonConstants; @@ -40,6 +43,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { //获取用户凭证 String token = request.getHeader(jwtUtils.getHeader()); + String customerId = request.getHeader(CommonConstants.CUSTOMER_ID); if (StrUtil.isBlank(token)) { token = request.getParameter(jwtUtils.getHeader()); } @@ -58,6 +62,20 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { String userId = (String) claims.get(CommonConstants.JWT_KEY_USER_ID); request.setAttribute(USER_KEY, userId); + //设置用户信息到threadLocal中 + LoginUserVO loginUserVO = new LoginUserVO(); + loginUserVO.setCustomerId(customerId); + loginUserVO.setUserId(userId); + LoginUserUtil.set(loginUserVO); + LoginUserVO loginUserVO1 = LoginUserUtil.get(); + System.out.println(JSON.toJSONString(loginUserVO1)); return true; } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + super.afterCompletion(request, response, handler, ex); + //清空threadLocal + LoginUserUtil.remove(); + } } diff --git a/tduck-api/src/main/resources/application.yml b/tduck-api/src/main/resources/application.yml index 13bd071..c178bea 100644 --- a/tduck-api/src/main/resources/application.yml +++ b/tduck-api/src/main/resources/application.yml @@ -54,7 +54,7 @@ platform: request: trace-log: true sign: - enable: false + enable: true secret: 916lWh2WMcbSWiHv ignore-urls: - /tduck-api/webjars/** diff --git a/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java b/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java index 3aa2de3..25ee966 100644 --- a/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java +++ b/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java @@ -25,6 +25,10 @@ public interface CommonConstants { * jwt userID key */ String JWT_KEY_USER_ID = "userId"; + /** + * 客户Id + */ + String CUSTOMER_ID = "customerId"; /**