当用户登录之后,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!!!