您好,登錄后才能下訂單哦!
1、本系統(tǒng)的后臺(tái)使用mysql數(shù)據(jù)庫(kù),SSH 框架,前端使用ExtJs實(shí)現(xiàn)。因?yàn)橄到y(tǒng)需要用到權(quán)限管理,所以作此記錄,權(quán)限管理精確到前端的每一個(gè)按鈕,甚至每一個(gè)action請(qǐng)求。
廢話不多說(shuō),直接進(jìn)入主題
(一)、數(shù)據(jù)庫(kù)的設(shè)計(jì)
權(quán)限管理部分總共包括4個(gè)數(shù)據(jù)表:
Power(記錄權(quán)限)、 Role(記錄角色)、 PowerRole(中間表)、 PowerUrl(記錄每一個(gè)action請(qǐng)求或者前端按鈕)
(Role表)
package com.txb.model;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="TB_ROLE")
public class Role {
private int roleId;
private String roleName;
private Set<RolePower> rolePowers;
private Set<AdminRole> adminRoles;
@Id
@Column(name = "ROLE_ID", insertable = false, updatable = false, nullable = false, unique = true)
@GeneratedValue(strategy=GenerationType.AUTO)
public int getroleId() {
return roleId;
}
public void setroleId(int roleId) {
this.roleId = roleId;
}
@Column(name = "role_NAME", nullable = false, length = 50)
public String getroleName() {
return roleName;
}
public void setroleName(String roleName) {
this.roleName = roleName;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "role")
public Set<RolePower> getrolePowers() {
return rolePowers;
}
public void setrolePowers(Set<RolePower> rolePowers) {
this.rolePowers = rolePowers;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "role")
public Set<AdminRole> getAdminroles() {
return adminRoles;
}
public void setAdminroles(Set<AdminRole> adminRoles) {
this.adminRoles = adminRoles;
}
}
(Power表)
package com.txb.model;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="TB_POWER")
public class Power {
private int powerId;
private String powerName;
private String powerType;
private String menu; //菜單
private Set<RolePower> rolePowers;
private Set<ActionUrl> actionUrls; //用戶角色
@Id
@Column(name = "POWER_ID", insertable = false, updatable = false, nullable = false, unique = true)
@GeneratedValue(strategy=GenerationType.AUTO)
public int getPowerId() {
return powerId;
}
public void setPowerId(int powerId) {
this.powerId = powerId;
}
@Column(name="POWER_NAME", nullable = false, length = 50)
public String getPowerName() {
return powerName;
}
public void setPowerName(String powerName) {
this.powerName = powerName;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "power")
public Set<RolePower> getRolePowers() {
return rolePowers;
}
public void setRolePowers(Set<RolePower> rolePowers) {
this.rolePowers = rolePowers;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "power")
public Set<ActionUrl> getActionUrls() {
return actionUrls;
}
public void setActionUrls(Set<ActionUrl> actionUrls) {
this.actionUrls = actionUrls;
}
@Column(name="POWER_TYPE", nullable = false, length = 10)
public String getPowerType() {
return powerType;
}
public void setPowerType(String powerType) {
this.powerType = powerType;
}
@Column(name="POWER_MENU", nullable = true, length = 10)
public String getMenu() {
return menu;
}
public void setMenu(String menu) {
this.menu = menu;
}
}
(Role - Power 中間表,因?yàn)樗麄兪嵌鄬?duì)多的關(guān)系)
package com.txb.model;
import java.io.Serializable;
import javax.persistence.*;
/**
* The persistent class for the rose_power database table.
*
*/
@Entity
@Table(name="TB_ROLE_POWER")
public class RolePower implements Serializable {
private int rpid;
private Power power;
private Role role;
public RolePower() {
}
@Id
@Column(name = "RP_ID", insertable = false, updatable = false, nullable = false, unique = true)
@GeneratedValue(strategy=GenerationType.AUTO)
public int getRpid() {
return this.rpid;
}
public void setRpid(int rpid) {
this.rpid = rpid;
}
@ManyToOne
@JoinColumn(name="POWER_ID")
public Power getPower() {
return this.power;
}
public void setPower(Power power) {
this.power = power;
}
@ManyToOne
@JoinColumn(name="ROLE_ID")
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
(PowerUrl 表,這個(gè)表是用來(lái)記錄每一個(gè)action請(qǐng)求,判斷該用戶所擁有的權(quán)限是否能執(zhí)行對(duì)應(yīng)的action請(qǐng)求)
package com.txb.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="TB_ACTION_URL")
public class ActionUrl {
private Power power;
private String url;
private String actionName;
private int aId;
@ManyToOne
@JoinColumn(name="POWER_ID")
public Power getPower() {
return power;
}
public void setPower(Power power) {
this.power = power;
}
@Column(name="URL", nullable = false, length = 50)
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
@Column(name="ACTION_NAME", nullable = false, length = 50)
public String getActionName() {
return actionName;
}
public void setActionName(String actionName) {
this.actionName = actionName;
}
@Id
@Column(name = "A_ID", insertable = false, updatable = false, nullable = false, unique = true)
@GeneratedValue(strategy=GenerationType.AUTO)
public int getaId() {
return aId;
}
public void setaId(int aId) {
this.aId = aId;
}
}
到此權(quán)限數(shù)據(jù)庫(kù)就已經(jīng)設(shè)計(jì)完畢,下一篇給大家介紹后臺(tái)邏輯部分
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。