<一>权限表的相关设计
一、基于角色的权限设计最重要的就是角色与菜单和操作(数据)的关系,如下图,菜单绑定角色和操作构成一个权限表(这里只控制到按钮权限)。组织其实也是一种角色。
二、表的设计
- SysMenu 菜单表,存放界面上显示的菜单项
- SysOperation 操作表,存放界面上按钮相关信息的表
- SysRole 角色表,存放系统角色的信息表
- SysUser 用户表,存放系统用户的信息表
- SysMenuToOperate 菜单与操作关联表,存放菜单与操作的关联信息
- SysRoleToUser 角色与用户关联表,存放角色与用户的关联信息
- SysRoleToMenuToOperate 权限表,存放角色、菜单、操作的关联信息
三、表的相关代码
/// <summary> /// 菜单类 /// </summary> public class SysMenu:IEntity { public string Id { get; set; } public string Name { get; set; } public string ParentId { get; set; } = ""; public int? Sort { get; set; } = 0; public bool ShowState { get; set; } = true; }
/// <summary> /// 操作类 /// </summary> public class SysOperation:IEntity { public string Id { get; set; } public string Name { get; set; } public string KeyCode { get; set; } public int Sort { get; set; } = 0; }
/// <summary> /// 角色类 /// </summary> public class SysRole:IEntity { public string Id { get; set; } public string Name { get; set; } }
/// <summary> /// 用户类 /// </summary> public class SysUser : IEntity { public string Id { get; set; } public string Name { get; set; } public string Password { get; set; } }
/// <summary> /// 菜单与操作关联表 /// </summary> public class SysMenuToOperate:IEntity { public string Id { get; set; } public string MenuId { get; set; } public string OperateId { get; set; } }
/// <summary> /// 角色与用户关联表 /// </summary> public class SysRoleToUser:IEntity { public string Id { get; set; } public string UserId { get; set; } public string RoleId { get; set; } }
/// <summary> /// 菜单与角色关联表 /// </summary> public class SysRoleToMenuToOperate : IEntity { public string Id { get; set; } public string MenuToOperateId { get; set; } public string RoleId { get; set; } public bool IsValid { get; set; } }