dengzedong
2024-12-31 90a1495b9d765c9e1d48f689dbcf977cbdb2768e
提交 | 用户 | 时间
e7c126 1 package com.iailab.framework.security.core;
H 2
3 import cn.hutool.core.map.MapUtil;
4 import com.iailab.framework.common.enums.UserTypeEnum;
5 import com.fasterxml.jackson.annotation.JsonIgnore;
6 import lombok.Data;
7
325d2f 8 import java.time.LocalDateTime;
e7c126 9 import java.util.HashMap;
H 10 import java.util.List;
11 import java.util.Map;
12
13 /**
14  * 登录用户信息
15  *
16  * @author iailab
17  */
18 @Data
19 public class LoginUser {
20
21     public static final String INFO_KEY_NICKNAME = "nickname";
22     public static final String INFO_KEY_DEPT_ID = "deptId";
23
24     /**
25      * 用户编号
26      */
27     private Long id;
28     /**
29      * 用户类型
30      *
31      * 关联 {@link UserTypeEnum}
32      */
33     private Integer userType;
34     /**
35      * 额外的用户信息
36      */
37     private Map<String, String> info;
38     /**
39      * 租户编号
40      */
41     private Long tenantId;
42     /**
43      * 授权范围
44      */
45     private List<String> scopes;
325d2f 46     /**
H 47      * 过期时间
48      */
49     private LocalDateTime expiresTime;
7da8f1 50     /**
H 51      * 访问令牌
52      */
53     private String accessToken;
e7c126 54
H 55     // ========== 上下文 ==========
56     /**
57      * 上下文字段,不进行持久化
58      *
59      * 1. 用于基于 LoginUser 维度的临时缓存
60      */
61     @JsonIgnore
62     private Map<String, Object> context;
63
64     public void setContext(String key, Object value) {
65         if (context == null) {
66             context = new HashMap<>();
67         }
68         context.put(key, value);
69     }
70
71     public <T> T getContext(String key, Class<T> type) {
72         return MapUtil.get(context, key, type);
73     }
74
75 }