springboot+AOP+自定义注解+RBAC自定义操作权限管理02

springboot+AOP+自定义注解+RBAC自定义操作权限管理02!经过上一次的凑话部署,我们这一次,增加了一个后端管理系统菜单栏的访问权限的数据表。用角色表,和这张菜单栏的数据表进行映射。不同的角色,可以看见不同的菜单栏目。


springboot+AOP+自定义注解+RBAC自定义操作权限管理02_第1张图片

 这个就是菜单栏的表格设计情况。

springboot+AOP+自定义注解+RBAC自定义操作权限管理02_第2张图片

这个就是角色表和菜单栏表格的映射表(中间表)。

经过这次修改后,我们的另外一个表就需要进行一些稍微的变化 。因为我们已经具备了角色和菜单栏的关系组合了。不再需要像之前那样笨拙的一点一点设计了。

 springboot+AOP+自定义注解+RBAC自定义操作权限管理02_第3张图片

如图,不同的角色,对应各自不同的menu_id。角色各自有各自的菜单功能组合了。

 springboot+AOP+自定义注解+RBAC自定义操作权限管理02_第4张图片

如图,我们设计了很多菜单的入口,所有的菜单入口地址都在这张表内。

哪个角色想有权限访问它们,只需要在关系表内加入数据即可。


package com.yrl.managedemo.bean;

import lombok.Data;

import javax.persistence.*;
import java.util.List;

@Data
@Entity
@Table(name = "tb_role")
public class Role {
    @javax.persistence.Id
    @org.springframework.data.annotation.Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)//主键生成策略
    private Integer id;

    @Column(name="role_name", nullable=false)
    private String  roleName;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "tb_role_menu",joinColumns = {@JoinColumn(name = "role_id")},inverseJoinColumns = {@JoinColumn(name = "menu_id")})
    List menuList;
}

 由于我们增就了角色和菜单的映射,所以,role角色的实体类里面应该新增一个list

集合。来存储对应的菜单情况。

package com.yrl.managedemo.bean;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

@Data
@Entity(name = "tb_menu")
public class Menu {
    @javax.persistence.Id
    @org.springframework.data.annotation.Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)//主键生成策略
    private Integer id;


    private String menu;


}

这个是菜单的实体类。毕竟简单。没有什么好多说的。


@GetMapping("/list")
    public Result getUser(){
        Result result = new Result<>();
        List userList = userService.getAllUser();
        for(User u:userList){
            System.out.println("用户id"+u.getId());
            System.out.println("用户名字"+u.getName());
            //获取用户权限的列表信息
            List roleList = u.getRoleList();
            for(Role role :roleList){
                System.out.println("用户的角色信息:"+role.getRoleName()+";");
                System.out.println("******该用户可以访问的菜单栏目start:*****");
                List menuList = role.getMenuList();
                for(Menu menu :menuList){
                    System.out.println(menu.getMenu()+";");
                }
                System.out.println("******该用户可以访问的菜单栏目end:*****");
            }

        }
        result.setCode(200);
        result.setMsg("信息查询成功");
        result.setData(userList.get(0));
        return result;
    }

我们再次修正完善了一下,返回一个结果对象,到前端就可以看见返回的user信息了。里面自然也就包含了对应的菜单权限和角色情况了。


springboot+AOP+自定义注解+RBAC自定义操作权限管理02_第5张图片

你可能感兴趣的:(springboot,spring,boot,java,spring)