国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ssh整合easyui的權(quán)限設(shè)計(jì)

2019-11-14 23:59:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
ssh整合easyui的權(quán)限設(shè)計(jì)

RBAC(Role-Based access Control,基于角色的訪問(wèn)控制),就是用戶通過(guò)角色與權(quán)限進(jìn)行關(guān)聯(lián)。

理解為用戶擁有多個(gè)角色,角色擁有多個(gè)權(quán)限。構(gòu)成了“用 戶-角色-權(quán)限”的授權(quán)模型。并且他們之間的關(guān)系為多對(duì)多。

對(duì)于用戶來(lái)說(shuō),登陸不同的賬號(hào)密碼,所屬的角色不同,可擁有不同的操作。

(寫任何代碼之前先要構(gòu)思我們要做什么,做這件事情,需要哪些最基礎(chǔ)的東西,他們之間的關(guān)系是什么,如何把他們整合在一起。

如果沒(méi)有想好,代碼寫下去會(huì)造成反復(fù)的修改浪費(fèi)了時(shí)間。)

1.首先我們需要3張表 用戶表 角色表 action表,用戶表角色表為多對(duì)多關(guān)系,角色表與action表為多對(duì)多關(guān)系。所以需要2張關(guān)系表,

即user_role 和role_action,用的知識(shí)為hibernate多對(duì)多表關(guān)聯(lián),下面貼下代碼。

首先是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的外鍵

簡(jiǎn)單說(shuō)明下 menu_id映射了menu表role_id映射了role表

下面是user_role表

user_role的外鍵

同上不在解釋;

只要懂得hibernate的多對(duì)多關(guān)系,上面的建表會(huì)非常簡(jiǎn)單。

通過(guò)以上的5張表,我們可以從用戶表獲取關(guān)聯(lián)的角色,然后通過(guò)角色表獲取關(guān)聯(lián)的action。反之亦然。

表建立完成,下面我們進(jìn)行基礎(chǔ)數(shù)據(jù)實(shí)現(xiàn)。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀集县| 通化市| 乌什县| 津市市| 贞丰县| 彭阳县| 从化市| 曲麻莱县| 辉南县| 大庆市| 商城县| 泉州市| 潍坊市| 焉耆| 上蔡县| 万年县| 宁陕县| 友谊县| 廉江市| 宿迁市| 调兵山市| 新巴尔虎左旗| 瓦房店市| 顺平县| 水城县| 龙州县| 启东市| 高阳县| 土默特右旗| 叶城县| 日喀则市| 鞍山市| 吉安县| 贺兰县| 封开县| 错那县| 元阳县| 临夏县| 溆浦县| 卫辉市| 百色市|