首页 > 学院 > 开发设计 > 正文

ssh整合easyui的权限设计

2019-11-14 23:59:01
字体:
来源:转载
供稿:网友
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。反之亦然。

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表