Browse Source

添加loginUserUtil工具

dev
jianjun 4 years ago
parent
commit
60456f1e63
  1. 8
      tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java
  2. 27
      tduck-account/src/main/java/com/tduck/cloud/account/util/LoginUserUtil.java
  3. 11
      tduck-account/src/main/java/com/tduck/cloud/account/vo/LoginUserVO.java
  4. 18
      tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java
  5. 2
      tduck-api/src/main/resources/application.yml
  6. 4
      tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java

8
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<UserMapper, UserEntity> 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

27
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<LoginUserVO> 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();
}
}

11
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;
}

18
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();
}
}

2
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/**

4
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";
/**

Loading…
Cancel
Save