arhui在上个帖子中说
引用:
把所有的权限写在一个字段里面,按二进制的形式把种权限写入,有该权限的就是:1,没有权限的就是:0,例如:011010011101010101010101
在验证该用户是否有此项权限时,写一个function或sub,带参数进去用mid的方法判断该权限所映射的是0或是1。
个人意见,仅供参考。
我比较顷向这种设计,比如一个单位软件可能需要40种权限,就给预留100位,并把权限按多少分区域,如管理功能预留10位,文章发表10位,工作权限30位......,总之预留位尽量多些,以便扩充。
另外,我想程序设计中对权限管理也很重要,应该用一个文件或函数来管理。
现在用.NET来开发就比较方便了。
.NET可能用类来管理权限。权限中的101111000象密码难以看懂,对程序维护不是很容易,所以用枚举的方式,把位数转化为可读懂的意义:
enum Purview {IsAdmin, ManageMember, ManageArticle, ......,
ManagePreSet1, ManagePreSet2, ......,
ArticleSend, ArticleView, .....,
ArticlePreSet1, ArticlePreSet2, ......};
或用结构定义权限
struct PersonPurview
{
public bool IsAdim;
public bool ManageMember;
......
}
用enum方式很方便,权限码strPurview
用函数,判断是否有该权限
public bool HasPurview(Purview, purview)
{
if ( srtPurview.SubString(Covert.ToInt32(purview) - 1, 1) = "1" )
{
return true;
}
else
{
return false;
}
}
用法:
if ( HasPurview(Purview.ArticleSend) )
{
......;
}
用结构,可能预读取用户信息后,把用户所有权限都设置在结构中
如
PersonPurview myPurview = new PersonPurview
..... // 预设置
if ( myPurview.IsAdmin )
{
......;
}
以上两种方法各有长处,也可以在一处程序中同时使用两种方法。
这是本人一些设想,很想能抛砖引玉。