Appearance
当前登录用户信息
1. 工具类:CurrentUserUtils.java
提供 3 种获取当前用户信息的方法
- getCurrentUser() - 从Spring Security上下文,获取用户基本信息(ZUser.java)
- getCurrentUserAll() - 从Spring Security上下文,获取用户全部信息(ZUserAllDTO.java)
- getCurrentUserByToken(String token) - 根据jwtToken获取当前用户信息(ZUser.java)
java
// 使用示例1:
ZUser user = CurrentUserUtils.getCurrentUser();
// 使用示例2:
ZUserAllDTO userDto = CurrentUserUtils.getCurrentUserAll();
// 使用示例3:
ZUser userByToken = CurrentUserUtils.getCurrentUserByToken(jwtToken);
2. 工具类的工作原理
工作原理
- Spring Security 已配置过滤器Filter,自动读取请求中的JwtToken信息,解析后从Redis缓存中,读取当前用户信息,放入上下文
- 支持2种方式传递JwtToken:
- (推荐)放在请求头(header)中,key是‘UserJwtToken’,前端web-vue2中,request.js统一处理,已自动加入该参数
- 也可以放在请求参数中,key是‘UserJwtToken’
过滤器
- JwtTokenAuthenticationFilter 过滤器
- 先验证 UserJwtToken 是否有效
- 然后从redis中,读取当前用户信息
- 将当前用户信息,放入Spring Security 上下文
3. 返回的用户类
- 用户基本信息类:com.kg.core.zuser.entity.ZUser.java
java
public class ZUser implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("用户ID")
@TableId(value = "user_id", type = IdType.ASSIGN_UUID)
private String userId;
@ApiModelProperty("用户所在部门ID")
private String orgId;
@ApiModelProperty("用户名")
private String userName;
// ...省略
}
- 用户全部信息类(继承了用户基础信息类):com.kg.core.zuser.dto.ZUserAllDTO.java
java
public class ZUserAllDTO extends ZUserDTO {
/** 所属角色列表 */
private List<ZRole> roleList;
/** 所在部门 */
private String orgName;
/** 部门父级ID */
private String orgParentId;
/** 部门路径ID */
private String orgPath;
/** 部门层级 */
private Integer orgLevel;
}