• 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。反之亦然。

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

  • 相关阅读:
    Ubantu 安装Redis
    传说中的WCF(5):数据协定(a)
    传说中的WCF(4):发送和接收SOAP头
    传说中的WCF(3):多个协定
    传说中的WCF(2):服务协定的那些事儿
    传说中的WCF(1):这东西难学吗?
    Linq教程
    Installutil.exe的位置和路径
    uni-app中对输入框的判断与提示(密码格式为6-12位,必须有大小写字母和数字组成)
    uni-app系列回顾总结----项目国际化
  • 原文地址:https://www.cnblogs.com/wsy123/p/4462856.html
Copyright © 2020-2023  润新知