Skip to content

Commit 79ea39d

Browse files
committed
refactor: 重构获取登录用户信息方式(线程级存储)
1 parent 8466105 commit 79ea39d

File tree

27 files changed

+522
-362
lines changed

27 files changed

+522
-362
lines changed

continew-admin-common/src/main/java/top/continew/admin/common/config/mybatis/DefaultDataPermissionUserContextProvider.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
package top.continew.admin.common.config.mybatis;
1818

1919
import cn.hutool.core.convert.Convert;
20-
import top.continew.admin.common.model.dto.LoginUser;
21-
import top.continew.admin.common.util.helper.LoginHelper;
20+
import top.continew.admin.common.context.UserContextHolder;
2221
import top.continew.starter.extension.datapermission.enums.DataScope;
2322
import top.continew.starter.extension.datapermission.filter.DataPermissionUserContextProvider;
2423
import top.continew.starter.extension.datapermission.model.RoleContext;
@@ -36,17 +35,16 @@ public class DefaultDataPermissionUserContextProvider implements DataPermissionU
3635

3736
@Override
3837
public boolean isFilter() {
39-
LoginUser loginUser = LoginHelper.getLoginUser();
40-
return !loginUser.isAdmin();
38+
return !UserContextHolder.isAdmin();
4139
}
4240

4341
@Override
4442
public UserContext getUserContext() {
45-
LoginUser loginUser = LoginHelper.getLoginUser();
43+
top.continew.admin.common.context.UserContext context = UserContextHolder.getContext();
4644
UserContext userContext = new UserContext();
47-
userContext.setUserId(Convert.toStr(loginUser.getId()));
48-
userContext.setDeptId(Convert.toStr(loginUser.getDeptId()));
49-
userContext.setRoles(loginUser.getRoles()
45+
userContext.setUserId(Convert.toStr(context.getId()));
46+
userContext.setDeptId(Convert.toStr(context.getDeptId()));
47+
userContext.setRoles(context.getRoles()
5048
.stream()
5149
.map(r -> new RoleContext(Convert.toStr(r.getId()), DataScope.valueOf(r.getDataScope().name())))
5250
.collect(Collectors.toSet()));

continew-admin-common/src/main/java/top/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@
1919
import cn.hutool.core.util.ObjectUtil;
2020
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
2121
import org.apache.ibatis.reflection.MetaObject;
22-
import top.continew.admin.common.util.helper.LoginHelper;
22+
import top.continew.admin.common.context.UserContextHolder;
2323
import top.continew.starter.core.exception.BusinessException;
24-
import top.continew.starter.core.util.ExceptionUtils;
2524
import top.continew.starter.extension.crud.model.entity.BaseDO;
2625

2726
import java.time.LocalDateTime;
@@ -62,7 +61,7 @@ public void insertFill(MetaObject metaObject) {
6261
if (null == metaObject) {
6362
return;
6463
}
65-
Long createUser = ExceptionUtils.exToNull(LoginHelper::getUserId);
64+
Long createUser = UserContextHolder.getUserId();
6665
LocalDateTime createTime = LocalDateTime.now();
6766
if (metaObject.getOriginalObject() instanceof BaseDO baseDO) {
6867
// 继承了 BaseDO 的类,填充创建信息字段
@@ -89,8 +88,7 @@ public void updateFill(MetaObject metaObject) {
8988
if (null == metaObject) {
9089
return;
9190
}
92-
93-
Long updateUser = LoginHelper.getUserId();
91+
Long updateUser = UserContextHolder.getUserId();
9492
LocalDateTime updateTime = LocalDateTime.now();
9593
if (metaObject.getOriginalObject() instanceof BaseDO baseDO) {
9694
// 继承了 BaseDO 的类,填充修改信息

continew-admin-common/src/main/java/top/continew/admin/common/config/websocket/WebSocketClientServiceImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
package top.continew.admin.common.config.websocket;
1818

19+
import cn.dev33.satoken.stp.StpUtil;
1920
import jakarta.servlet.http.HttpServletRequest;
2021
import org.springframework.http.server.ServletServerHttpRequest;
2122
import org.springframework.stereotype.Component;
22-
import top.continew.admin.common.model.dto.LoginUser;
23-
import top.continew.admin.common.util.helper.LoginHelper;
23+
import top.continew.starter.core.exception.BusinessException;
2424
import top.continew.starter.messaging.websocket.core.WebSocketClientService;
2525

2626
/**
@@ -36,7 +36,9 @@ public class WebSocketClientServiceImpl implements WebSocketClientService {
3636
public String getClientId(ServletServerHttpRequest request) {
3737
HttpServletRequest servletRequest = request.getServletRequest();
3838
String token = servletRequest.getParameter("token");
39-
LoginUser loginUser = LoginHelper.getLoginUser(token);
40-
return loginUser.getToken();
39+
if (null == StpUtil.getLoginIdByToken(token)) {
40+
throw new BusinessException("登录已过期,请重新登录");
41+
}
42+
return token;
4143
}
4244
}

continew-admin-common/src/main/java/top/continew/admin/common/constant/CacheConstants.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,6 @@ public class CacheConstants {
3131
*/
3232
public static final String DELIMITER = StringConstants.COLON;
3333

34-
/**
35-
* 登录用户键
36-
*/
37-
public static final String LOGIN_USER_KEY = "LOGIN_USER";
38-
3934
/**
4035
* 验证码键前缀
4136
*/

continew-admin-common/src/main/java/top/continew/admin/common/model/dto/RoleDTO.java renamed to continew-admin-common/src/main/java/top/continew/admin/common/context/RoleContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package top.continew.admin.common.model.dto;
17+
package top.continew.admin.common.context;
1818

1919
import lombok.Data;
2020
import top.continew.admin.common.enums.DataScopeEnum;
@@ -23,13 +23,13 @@
2323
import java.io.Serializable;
2424

2525
/**
26-
* 角色信息
26+
* 角色上下文
2727
*
2828
* @author Charles7c
2929
* @since 2023/3/7 22:08
3030
*/
3131
@Data
32-
public class RoleDTO implements Serializable {
32+
public class RoleContext implements Serializable {
3333

3434
@Serial
3535
private static final long serialVersionUID = 1L;

continew-admin-common/src/main/java/top/continew/admin/common/model/dto/LoginUser.java renamed to continew-admin-common/src/main/java/top/continew/admin/common/context/UserContext.java

Lines changed: 17 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package top.continew.admin.common.model.dto;
17+
package top.continew.admin.common.context;
1818

1919
import cn.hutool.core.collection.CollUtil;
2020
import lombok.Data;
@@ -28,14 +28,14 @@
2828
import java.util.stream.Collectors;
2929

3030
/**
31-
* 登录用户信息
31+
* 用户上下文
3232
*
3333
* @author Charles7c
34-
* @since 2022/12/24 13:01
34+
* @since 2024/10/9 20:29
3535
*/
3636
@Data
3737
@NoArgsConstructor
38-
public class LoginUser implements Serializable {
38+
public class UserContext implements Serializable {
3939

4040
@Serial
4141
private static final long serialVersionUID = 1L;
@@ -56,69 +56,39 @@ public class LoginUser implements Serializable {
5656
private Long deptId;
5757

5858
/**
59-
* 权限码集合
60-
*/
61-
private Set<String> permissions;
62-
63-
/**
64-
* 角色编码集合
65-
*/
66-
private Set<String> roleCodes;
67-
68-
/**
69-
* 角色集合
70-
*/
71-
private Set<RoleDTO> roles;
72-
73-
/**
74-
* 令牌
75-
*/
76-
private String token;
77-
78-
/**
79-
* IP
80-
*/
81-
private String ip;
82-
83-
/**
84-
* IP 归属地
85-
*/
86-
private String address;
87-
88-
/**
89-
* 浏览器
59+
* 最后一次修改密码时间
9060
*/
91-
private String browser;
61+
private LocalDateTime pwdResetTime;
9262

9363
/**
94-
* 操作系统
64+
* 登录时系统设置的密码过期天数
9565
*/
96-
private String os;
66+
private Integer passwordExpirationDays;
9767

9868
/**
99-
* 登录时间
69+
* 权限码集合
10070
*/
101-
private LocalDateTime loginTime;
71+
private Set<String> permissions;
10272

10373
/**
104-
* 最后一次修改密码时间
74+
* 角色编码集合
10575
*/
106-
private LocalDateTime pwdResetTime;
76+
private Set<String> roleCodes;
10777

10878
/**
109-
* 登录时系统设置的密码过期天数
79+
* 角色集合
11080
*/
111-
private Integer passwordExpirationDays;
81+
private Set<RoleContext> roles;
11282

113-
public LoginUser(Set<String> permissions, Set<RoleDTO> roles, Integer passwordExpirationDays) {
83+
public UserContext(Set<String> permissions, Set<RoleContext> roles, Integer passwordExpirationDays) {
11484
this.permissions = permissions;
11585
this.setRoles(roles);
11686
this.passwordExpirationDays = passwordExpirationDays;
11787
}
11888

119-
public void setRoles(Set<RoleDTO> roles) {
89+
public void setRoles(Set<RoleContext> roles) {
12090
this.roles = roles;
121-
this.roleCodes = roles.stream().map(RoleDTO::getCode).collect(Collectors.toSet());
91+
this.roleCodes = roles.stream().map(RoleContext::getCode).collect(Collectors.toSet());
12292
}
12393

12494
/**

0 commit comments

Comments
 (0)