08-动态查询用户的权限-用户中心查询用户权限

本文档描述了如何在用户中心服务中实现用户权限查询功能。通过修改@GetMapping("/getuserext")接口,当认证服务请求用户信息时,不仅返回用户基本信息,还加入用户权限信息。在DAO层定义XcMenuMapper接口和XML文件,用于根据用户ID查询权限菜单。在Service层的getUserExt方法中,结合用户ID获取权限列表,并将其添加到用户扩展信息中返回给认证服务。
摘要由CSDN通过智能技术生成

3.3 用户中心查询用户权限

3.3.1 需求分析

认证服务请求用户中心查询用户信息,用户需要将用户基本信息和用户权限一同返回给认证服务。
本小节实现用户查询查询用户权限,并将用户权限信息添加到的用户信息中返回给认证服务。
以上需求需要修改如下接口:

@GetMapping("/getuserext")
public XcUserExt getUserext(@RequestParam("username") String username);

3.3.2 DAO

在用户中心服务中编写dao,实现根据用户id查询权限。
1、定义XcMenuMapper.java
在com.xuecheng.ucenter.dao包下定义:

@Mapper
public interface XcMenuMapper {
public List<XcMenu> selectPermissionByUserId(String userid);
}

在这里插入图片描述

2、XcMenuMapper.xml
在com.xuecheng.ucenter.dao下定义XcMenuMapper.xml

<?xml version="1.0" encoding="UTF‐8" ?>
<!DOCTYPE mapper PUBLIC "‐//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis‐3‐
mapper.dtd" >
<mapper namespace="com.xuecheng.ucenter.dao.XcMenuMapper" >
<select id="selectPermissionByUserId"
resultType="com.xuecheng.framework.domain.ucenter.XcMenu" parameterType="java.lang.String" >
SELECT
id,
CODE,
p_id pId,
menu_name menuName,
url,
is_menu isMenu,
LEVEL,
sort,
STATUS,
icon,
create_time createTime,
update_time updateTiem
FROM
xc_menu
WHERE id IN(
SELECT menu_id FROM xc_permission WHERE role_id IN(
SELECT role_id FROM xc_user_role WHERE user_id = #{id}
)
)
</select>
</mapper>

在这里插入图片描述

其它Dao采用spring data 编写如下:
在这里插入图片描述

3.3.3 Service

修改UserService的getUserExt方法,查询用户权限。

//根据账号查询用户的信息,返回用户扩展信息
public XcUserExt getUserExt(String username){
XcUser xcUser = this.findXcUserByUsername(username);
if(xcUser == null){
return null;
}
//根据用户id查询用户权限
String userId = xcUser.getId();
List<XcMenu> xcMenus = xcMenuMapper.selectPermissionByUserId(userId);
XcUserExt xcUserExt = new XcUserExt();
BeanUtils.copyProperties(xcUser,xcUserExt);
//用户的权限
xcUserExt.setPermissions(xcMenus);
return xcUserExt;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值