RedGlove 权限管理系统(2)-功能模块设计
2009-04-21 12:20
423 查看
在RedGlove Permission中,功能模块配置是不可缺少的一部份,先让我们来了解一个模块中所需要的元素:
[align=center][/align]
建立这样的表结构,我们就可以配置出无级的功能模块管理,这样的表结构是单表设计,也可将它分离,就在网上的RedGlove Permission中一样,分类一个表,功能模块一个表,现在我们先用单表结构讲述吧,在下一个版本中,我准备将模块管理缩成单个表,现在我们看一下详细设计,模块分类的管理,在表中用到ID, Name, PID, Depth, Order, Count, Description就够了,其它的都是给模块用的,查询出来的时候,我们只要用递归就能很容易的将数据读出来,下面就是一段读取无级分类的代码
protected void bind()
{
RGP.BLL.Modules bll = new RGP.BLL. Modules ();
DataView dvList = new DataView(bll.GetModuleList("ModuleTag=’’").Tables[0]);
LoadModuleList("0", 0, dvList);
}
/// <summary>
/// 加载模块分类
/// </summary>
/// <param name="ModulePID">分类上级ID</param>
/// <param name="Depth">分类级别深度</param>
protected void LoadModuleList(string UG_TID, int Depth,DataView dvList)
{
dvList.RowFilter = "ModuleSuperiorID=" + UG_TID; //过滤父节点
foreach (DataRowView dv in dvList)
{
string depth = string.Empty;
for (int i = 0; i < Depth; i++)
{
depth = depth + "-";
}
ModuleList.Items.Add(new ListItem(depth + dv["ModuleName"].ToString(), dv["ModuleID"].ToString()));
//递归
LoadModuleList(dv["ModuleID"].ToString(), int.Parse(dv["ModuleDepth"].ToString()) + 1, dvList);
}
}
功能中使用的方法:
上面已经完成了模块的配置,但功能模块要参与权限管制,就得为这些模块添加相应的权限,下面我还得继续权限列表的设计。
[align=center][/align]
功能模块的权限采用竖向表设计,这样,可以添加多个权限,功能模块的权限管理中使用的方法如下:
元素名称 | 说明 |
ID | 这个是必须,也是唯一的 |
Name | 显示在UI上的名称,不能为空 |
PID | 上级ID,可以进行多级处理,默认为0,0为顶级记录 |
Depth | 记录的层次深度,默认为0,0为顶级记录 |
Order | 排序,想控制显示顺序还是加上吧 |
Count | 统计子集的总数,可不要 |
Tag | 这个是权限认证的标识,可为空,如果存在则要唯一 |
URL | WEB功能模块的地址, 可为空 |
FormName | Win Form的名称,与URL作用是一样, 可为空 |
Disabled | 模块是否启用,默认为true |
IsMenu | 是否显示到菜单上,默认为true |
Description | 描述,可不要 |
建立这样的表结构,我们就可以配置出无级的功能模块管理,这样的表结构是单表设计,也可将它分离,就在网上的RedGlove Permission中一样,分类一个表,功能模块一个表,现在我们先用单表结构讲述吧,在下一个版本中,我准备将模块管理缩成单个表,现在我们看一下详细设计,模块分类的管理,在表中用到ID, Name, PID, Depth, Order, Count, Description就够了,其它的都是给模块用的,查询出来的时候,我们只要用递归就能很容易的将数据读出来,下面就是一段读取无级分类的代码
protected void bind()
{
RGP.BLL.Modules bll = new RGP.BLL. Modules ();
DataView dvList = new DataView(bll.GetModuleList("ModuleTag=’’").Tables[0]);
LoadModuleList("0", 0, dvList);
}
/// <summary>
/// 加载模块分类
/// </summary>
/// <param name="ModulePID">分类上级ID</param>
/// <param name="Depth">分类级别深度</param>
protected void LoadModuleList(string UG_TID, int Depth,DataView dvList)
{
dvList.RowFilter = "ModuleSuperiorID=" + UG_TID; //过滤父节点
foreach (DataRowView dv in dvList)
{
string depth = string.Empty;
for (int i = 0; i < Depth; i++)
{
depth = depth + "-";
}
ModuleList.Items.Add(new ListItem(depth + dv["ModuleName"].ToString(), dv["ModuleID"].ToString()));
//递归
LoadModuleList(dv["ModuleID"].ToString(), int.Parse(dv["ModuleDepth"].ToString()) + 1, dvList);
}
}
功能中使用的方法:
方法名 | 说明 |
CreateModuleType() | 创建模块分类 |
UpdateModuleType() | 修改模块分类 |
DeleteModuleType() | 删除模块分类 |
GetModuleTypeModel() | 获取一条分类的详细信息 |
GetModuleTypeList() | 获取模块分类列表 |
CreateModule() | 创建模块,创建的同时,也将加入权限 |
UpdateModule() | 修改模块 |
DeleteModule() | 删除模块 |
ModuleTagExists() | 判断模块标签是否已经存在 |
GetModuleModel() | 获取一条分类的详细信息 |
GetModuleList() | 获取模块列表 |
GetModules() | 获取分类和模块列表 |
其它方法 | |
SetName() | 修改名称 |
SetDescription() | 修改描述 |
SetDisabled() | 设置是否启用功能模块 |
SetIsMenu() | 设置是否显示到菜单 |
GetModuleDepth() | 获取分类/模块的深度 |
GetModuleCount() | 获取分类下的子集 |
元素名称 | 说明 |
ID | 这个是必须,也是唯一的 |
ModuleID | 对应模块的ID |
AuthorityTag | 权限标识,这个是对应权限标字典的数据,如浏览权限为RGP_BROWSE |
功能模块的权限采用竖向表设计,这样,可以添加多个权限,功能模块的权限管理中使用的方法如下:
方法名 | 说明 |
CreateAuthorityList() | 创建模块权限列表 |
UpdateAuthorityList() | 修改模块权限列表,修改的时候,必须判断传入的是新增还是取消权限,如果是取消,将删除模块对应该的权限,还有角色,用户拥有的该模块权限 |
DeleteAuthorityList() | 删除模块权限列表,删除模块对应该的权限,还有角色,用户拥有的该模块权限 |
GetAuthorityList() | 获取一条分类的详细信息 |
相关文章推荐
- 模块管理常规功能自己定义系统的设计与实现(31--第三阶段 权限设计[1])
- 模块管理常规功能自定义系统的设计与实现(05--权限和菜单)
- 模块管理常规功能自定义系统的设计与实现(32--权限设计[2])
- 模块管理常规功能自定义系统的设计与实现(33--权限设计[3])
- 模块管理常规功能自定义系统的设计与实现(31--第三阶段 权限设计[1])
- 模块管理常规功能自定义系统的设计与实现(03--基本系统)
- 模块管理常规功能自定义系统的设计与实现(04--导入模块)
- 模块管理常规功能自定义系统的设计与实现(37--终级阶段 综合查询[4])
- 模块管理常规功能自定义系统的设计与实现(41--终级阶段 综合查询[8]分类汇总)
- 模块管理常规功能自定义系统的设计与实现(16--模块数据的导出和打印[1])
- 模块管理常规功能自己定义系统的设计与实现(36--终级阶段 综合查询[3])
- 模块管理常规功能自定义系统的设计与实现(26--多个模块之间的关联[2])
- 模块管理常规功能自定义系统的设计与实现(53--演示程序和视频讲解 )
- 模块管理常规功能自定义系统的设计与实现(12--Grid导航设计初步[2])
- 模块管理常规功能自定义系统的设计与实现(54--视频讲解更新高清 )
- 模块管理常规功能自己定义系统的设计与实现(22--第二个模块的增加)
- 模块管理常规功能自定义系统的设计与实现(22--第二个模块的加入)
- 模块管理常规功能自定义系统的设计与实现(23--二个模块之间的关联[1])
- 模块管理常规功能自定义系统的设计与实现(28--多个模块之间的关联[4])
- 模块管理常规功能自定义系统的设计与实现(30--第二阶段总结)