千家信息网

Spring + Struts2 + ExtJs 权限管理的设计(一)数据库的设计

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,1、本系统的后台使用mysql数据库,SSH 框架,前端使用ExtJs实现。因为系统需要用到权限管理,所以作此记录,权限管理精确到前端的每一个按钮,甚至每一个action请求。废话不多说,直接进入主题
千家信息网最后更新 2025年02月02日Spring + Struts2 + ExtJs 权限管理的设计(一)数据库的设计

1、本系统的后台使用mysql数据库,SSH 框架,前端使用ExtJs实现。因为系统需要用到权限管理,所以作此记录,权限管理精确到前端的每一个按钮,甚至每一个action请求。


废话不多说,直接进入主题


(一)、数据库的设计

权限管理部分总共包括4个数据表:

Power(记录权限)、 Role(记录角色)、 PowerRole(中间表)、 PowerUrl(记录每一个action请求或者前端按钮)


(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 rolePowers;

private Set 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 getrolePowers() {

return rolePowers;

}


public void setrolePowers(Set rolePowers) {

this.rolePowers = rolePowers;

}


@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "role")

public Set getAdminroles() {

return adminRoles;

}


public void setAdminroles(Set 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 rolePowers;

private Set 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 getRolePowers() {

return rolePowers;

}


public void setRolePowers(Set rolePowers) {

this.rolePowers = rolePowers;

}


@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "power")

public Set getActionUrls() {

return actionUrls;

}


public void setActionUrls(Set 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 中间表,因为他们是多对多的关系

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 表,这个表是用来记录每一个action请求,判断该用户所拥有的权限是否能执行对应的action请求)

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;

}

}


到此权限数据库就已经设计完毕,下一篇给大家介绍后台逻辑部分




权限 数据 数据库 管理 前端 设计 后台 按钮 用户 系统 角色 部分 精确 主题 废话 数据表 框架 菜单 逻辑 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 智能车软件开发基地 乌克兰游戏用什么服务器 华为软件开发需要配置的电脑 溧阳住宿软件开发 易唐天下网络技术有限公司 北京市教育信息化共享数据库 沈阳科技学院互联网金融 公安网络安全工程师一般月收入 属于无线网络技术的是什么 我的世界侏罗纪公园之双人服务器 广东网络安全职称 医用软件开发生产 王者语音服务器未响应 17级计算机网络技术高中班 网络安全控制技术解释 移动光猫rms服务器是什么 江苏省众创空间 数据库 网络安全的选修课程 软件开发量化工作总结 成都咪咕软件开发待遇 业务人员需要了解数据库吗 高级软件开发工程师英文翻译 学电脑网络技术作文 服务器的日常管理与维护 数据库原理第三版实验答案 百单网互联网科技有 mui折叠面板加载数据库 网络安全日志管理服务器 11.23更新后的联盟服务器 非标上位机用什么软件开发
0