动态菜单
动态菜单:系统里面有很多菜单可以进行点击操作,但是不同的角色用户能够操作的菜单肯定是不会相同的,那么,就需要用角色来区分用户,进而区分用户所能看到/操作的菜单。
准备测试数据
还是使用之前的两个用户,hlliu和t114,hlliu设置为角色1(管理员),t114设置为角色2(客户经理),管理员至少拥有“权限管理”权限,客户管理拥有“营销管理”,“客户管理”等权限
获取动态菜单
用户登录成功之后,需要获取到用户相应的动态菜单数据,此功能代码前面章节已经实现,在IndexController类的login方法中,具体代码如下:
// 认证(登录)成功
User user = (User) subject.getPrincipal();
// 获取权限
Role role = user.getRole(); // 如果一对多关联不是立即加载,则需要通过用户获取
List<Right> rights = roleService.findRightsByRole(role);
role.getRights().addAll(rights);
session.setAttribute("loginUser", user);
显示动态菜单
<li class="active"><a><i class="fa fa-home"></i> <span>权限管理</span><span class="fa fa-chevron-down"></span></a><ul class="nav child_menu" style="display: block;"><li class="current-page"><a th:href="@{/user/list}" href="/crm/user/list">用户管理 </a></li><li><a href="/role/list">角色管理</a></li></ul></li>
角色管理
前面我们实现了用户管理,接下来我们实现角色管理,角色管理和用户管理实现的功能差不读,最大的区别在于新增或修改角色时,需要指定角色拥有的权限,这也是角色管理中的一处冲难点。
Model模型开发
1、entity包括Role.java和Right.java,且两个对象是多对多关系,前面已经实现。
2、Repository包括 RoleRepository.Java 和 RightRepository.Java,前面已经实现,且在RoleRepository.java中添加根据角色名称进行模糊查询并分页的方法:
Page<Role> rolePage(String roleName, Page<Role> rolePager);