Skip to content

当前登录用户信息

1. 获取当前用户(使用Security上下文)

想获取当前用户信息,必须在请求中:携带有效的 JwtToken

  • UserJwtToken 可以放在header中(推荐)
  • UserJwtToken 也可以放在请求参数中

过滤器

JwtTokenAuthenticationFilter 过滤器

  1. 先验证 UserJwtToken 是否有效
  2. 然后从redis中,读取当前用户信息
  3. 将当前用户信息,放入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;
}