软件的功能模块如:销售管理、采购管理。。等
大模块下面有多及小模块。如:销售管理 下面有 销售单、定价。等我的问题是,每个模块都牵涉到权限问题,必定要给每个模块编一个id
那么所有模块名及其id共同形成一个类似目录树的结构,那么我应该以什么形式
把这些id“保存”在程序里,供模块调用时检查权限呢?我之前是想把所用id都保存在各自模块对应的类里,但这样导致id很分散,很不直观,不方便管理。
望大家指点~
大模块下面有多及小模块。如:销售管理 下面有 销售单、定价。等我的问题是,每个模块都牵涉到权限问题,必定要给每个模块编一个id
那么所有模块名及其id共同形成一个类似目录树的结构,那么我应该以什么形式
把这些id“保存”在程序里,供模块调用时检查权限呢?我之前是想把所用id都保存在各自模块对应的类里,但这样导致id很分散,很不直观,不方便管理。
望大家指点~
但源程序里也要保存这个对应关系(01--销售管理、02 --采购管理),
才能运行对应程序(如打开某销售管理的窗口是form1,而不是其他什么form)
问题是,这个模块及子模块的数量达到数百个时,管理起来就很不方便了。
这个应该不算复杂吧。比如:
if(ActionHandle(LoginForm.WhoAmI))
Initalize();
在初始化这个树的时候,在树的属性中增加一个Hashtable类似的变量,把Id作为关键字,Module作为值进行存入。这样可以进行便捷的访问,如果直接编写一个节点查找方法应该也是比较方便的。其实在系统中这样的树型数据结构是很正常的。
1.首先要有基本权限(如,进入,查询,添加,删除,修改等)
2.定义功能列表(如,销售管理、采购管理)
3.在以上基础上架起角色
4.在Web上的体现,将验证统一起来.
public interface ITreeModel
{
int Id{get;set;}
string Name{get;set;}
int ParentId{get;set;}
ITreeModel Parent{get;set;}
ITreeModelCollection Childs{get;set;}
}
在此id都是唯一的,对于此类他的加载时完成他的父类的关联和子类的关联平面化
在读取好权限后加载可以用的功能模块,十分方便。