zoukankan      html  css  js  c++  java
  • ssh整合easyui的权限设计

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。

    理解为用户拥有多个角色,角色拥有多个权限。构成了“用 户-角色-权限”的授权模型。并且他们之间的关系为多对多。

    对于用户来说,登陆不同的账号密码,所属的角色不同,可拥有不同的操作。

    (写任何代码之前先要构思我们要做什么,做这件事情,需要哪些最基础的东西,他们之间的关系是什么,如何把他们整合在一起。

    如果没有想好,代码写下去会造成反复的修改浪费了时间。)

    1.首先我们需要3张表  用户表 角色表 action表,用户表角色表为多对多关系,角色表与action表为多对多关系。所以需要2张关系表,

    即user_role 和role_action,用的知识为hibernate多对多表关联,下面贴下代码。

    首先是T_user类

        private String id;
        private String name;
        private String age;
        private String sex;
        private Set<T_role> role =new HashSet<>();
        private String t_name;   
        private String t_password;   
    
              @ManyToMany(fetch=FetchType.EAGER)
          @JoinTable(
                  name="user_role",
                  joinColumns=@JoinColumn(name="user_id",referencedColumnName="id"),
                  inverseJoinColumns=@JoinColumn(name="role_id",referencedColumnName="id")
                  )
          public Set<T_role> getRole() {
              return role;
          }
          
          public void setRole(Set<T_role> role) {
              this.role = role;
          }
    //其他的set get省略

    T_role类

            private String id;
        private String name;
        private Set<T_user> user =new HashSet<>();
        private Set<Menu> menu =new HashSet<>();
        public T_role() {
        }    
            @ManyToMany(fetch=FetchType.EAGER)
          @JoinTable(name="user_role",
            joinColumns=@JoinColumn(name="role_id",referencedColumnName="id"),
            inverseJoinColumns=@JoinColumn(name="user_id",referencedColumnName="id"))
                
        public Set<T_user> getUser() {
            return user;
        }
    
        public void setUser(Set<T_user> user) {
            this.user = user;
        }
        
    
          @ManyToMany(fetch=FetchType.EAGER)
          @JoinTable(name="role_menu",
            joinColumns=@JoinColumn(name="role_id",referencedColumnName="id"),
            inverseJoinColumns=@JoinColumn(name="menu_id",referencedColumnName="id"))
                
        public Set<Menu> getMenu() {
            return menu;
        }
    
        public void setMenu(Set<Menu> menu) {
            this.menu = menu;
        }

    Menu类(即action类)

        private String id;
        private String name;
        private String icon;
        private String url;
        private String __parentId;
            private String type;
        private Set<T_role> role =new HashSet<>();
    
    
         @ManyToMany(fetch=FetchType.EAGER)
          @JoinTable(name="role_menu",
            joinColumns=@JoinColumn(name="menu_id",referencedColumnName="id"),
            inverseJoinColumns=@JoinColumn(name="role_id",referencedColumnName="id"))
        public Set<T_role> getRole() {
            return role;
        }
    
        public void setRole(Set<T_role> role) {
            this.role = role;
        }
    //其他setget省略

    下面是连接表

    role_menu

    role_menu的外键

    简单说明下 menu_id映射了menu表role_id映射了role表

    下面是user_role表

    user_role的外键

    同上不在解释;

    只要懂得hibernate的多对多关系,上面的建表会非常简单。

    通过以上的5张表,我们可以从用户表获取关联的角色,然后通过角色表获取关联的action。反之亦然。

    表建立完成,下面我们进行基础数据实现。

  • 相关阅读:
    windows10下Mysql5.7安装指南
    SVN迁移Gitlab步骤
    java.lang.String中的replace方法到底替换了一个还是全部替换了。
    MongoDB升级导致启动失败
    阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)
    CentOS7.3编译安装Nginx设置开机启动
    关于使用Xshell远程连接启动tomcat导致图片不显示,报错Could not initialize class sun.awt.X11GraphicsEnvironment解决方案
    easyui报错“Cannot read poperty 'options' of undefined”问题解决方案之一
    Ubuntu18.04系统中vi键盘输入字符不匹配
    ux.form.field.TreePicker 扩展,修复火狐不能展开bug
  • 原文地址:https://www.cnblogs.com/wsy123/p/4462856.html
Copyright © 2011-2022 走看看