SpringBoot项目实战-获取当前登录用户(七)

2,167 阅读1分钟

当用户登录之后,spring security框架可以存储用户对象到全局上下文中(上一期已经实现),所以可以编写一个接口(getAdminInfo)获取当前的用户信息: 在LoginController中:

@ApiOperation(value="获取当前用户登录信息")
@GetMapping("/admin/info")
public RespBean getAdminInfo(Principal principal){//用户登录之后,用户对象被设置到全局里面去了,所以可以在Principal中获取用户信息
    if(principal==null){
        return null;
    }
    String username=principal.getName();
    Admin admin=adminService.getAdminByUsername(username);//
    admin.setPassword(null);
    return RespBean.success("请求成功!",admin);
}

然后就要在AdminService创建方法getAdminByUsername:

Admin getAdminByUsername(String username);

所以需要去AdminServiceImpl实现这个方法:

/**
 * 通过用户名获取当前用户对象
 * @param username
 * @return
 */
@Override
public Admin getAdminByUsername(String username) {
    //这里需要使用mapper,所以注入AdminMapper
    return adminMapper.selectOne(new QueryWrapper<Admin>().eq("username",username).eq("enabled",true));
}

值得注意的是,我们在这个过程中使用了Principal,用户登录之后,用户对象被设置到全局里面去了,所以可以在Principal中获取用户信息,查找用户信息也是用了mybatisPlus中的selectOne!!!