Appearance
当前登录用户信息
1. 获取当前用户(使用Security上下文)
想获取当前用户信息,必须在请求中:携带有效的 JwtToken
- UserJwtToken 可以放在header中(推荐)
- UserJwtToken 也可以放在请求参数中
过滤器
JwtTokenAuthenticationFilter 过滤器
- 先验证 UserJwtToken 是否有效
- 然后从redis中,读取当前用户信息
- 将当前用户信息,放入Spring Security 上下文
当前用户
CurrentUserUtils 当前用户 - 工具类
- 从 Spring Security 上下文中,读取当前用户信息
- CurrentUserUtils.getCurrentUser()
2. 获取当前用户(使用jwtToken解析)
- 使用 JwtToken2UserUtils.java 工具类,代码如下:
java
import javax.annotation.Resource;
@Component
public class JwtToken2UserUtils {
@Resource
private RedisUtils redisUtils;
/**
* 获取当前用户信息(ZUser) - 根据jwtToken获取
*
* @param token jwtToken值
* @return 当前用户信息
*/
public ZUser getCurrentUserByToken(String token) throws BaseException {
// 解析用户逻辑
}
}
- 使用示例,代码如下:
java
public class XxxController {
@Resource
private JwtToken2UserUtils jwtToken2UserUtils;
public ZUser xxxFunction(){
return jwtToken2UserUtils.getCurrentUserByToken(jwtToken);
}
}
3. 获取用户全部信息(根据userId)
- 获取用户全部信息,包括用户基本信息、用户部门、用户角色列表。
- 使用 IZUserService 接口的 getUserAllInfo() 方法查询
- 参数:userId 用户id
- 返回值:ZUserAllDTO 用户全部信息
下面是一个Demo示例代码:
java
public class XxxController {
@Resource
private IZUserService userService;
public ZUserAllDTO xxxFunction(){
// 获取当前用户信息
ZUser currentUser = CurrentUserUtils.getCurrentUser();
// 获取用户全部信息
ZUserAllDTO userAllInfo = userService.getUserAllInfo(currentUser.getUserId())
return userAllInfo;
}
}
返回值ZUserAllDTO.java的代码如下:
java
@Getter
@Setter
public class ZUserAllDTO extends ZUserDTO {
/**
* 所属角色列表
*/
private List<ZRole> roleList;
/**
* 所在部门
*/
private String orgName;
}