最新评论
Re:vss2005操作手册 prolove2 2009-10-28 09:13
很好, 很实用.
当你要从别的网站爬数据到自己的数据库的时候,这个功能就有用了,呵呵~
re: vss2005操作手册 也算赌徒 2009-01-14 14:31
@虫子的一天
一边操作一边写的^__^
re: vss2005操作手册 虫子的一天 2009-01-14 12:01
这个手册真够简介的。。。:)
只是最基本的基于角色的权限系统设计,对于复杂权限系统肯定不适合。
还有,你的主键字段用的都是int自增型,如果我们的设计只是想用于一套系统中,那么这种类型很好,也很高效。
但既然我们要开发一套独立的rbac供其他系统使用。就需要考虑兼容问题。
如果两套系统都用了我们开发的rbac,那么在合并两套rabc时id就会冲突.
建议采用guid杜绝这个问题。
你的脚本后面有一些数据无法添加。报错。
而且我现在发现你在role和group进行耦合时有问题,RBAC_usergrouprole,你在表中放置了userid,groupid,roleid三个字段,那就是role可以直接和user发身关系了。但我们应该尽量避免这种情况。我觉得user和group用rbac_usersingroups表连接,然后group和role用rbac_groupsRoles连接,这样user即和role关联,也不会直接耦合。
其他的表设计得不错,关系很清晰。
继续努力!
@月不全,孤独缺
谢谢!问题很深刻。考虑问题的角度很值得我学习。我不知道以我现在对权限管理的理解程度,是否有能力想明白您提出的这些问题。下面是我对问题的理解。
“关于权限分组”
在我的脚本里,我是把“成组的权限”看成“角色”。我不太清楚您所说的“权限分组”具体是什么意思。我在这里猜测了一下。是不是对应同一“资源”的“权限”放到一个“权限组”中呢。这样在项目中实际“勾选”(项目中,UI界面下常见的权限分配时采用的方式)的时候,应该会计较容易。如果是这个问题的话,对应我上面的脚本,可以通过在“操作表”里边加入类似下面的数据来解决问题。
--全部权限
insert into [RBAC_Operate] values(5,'全部');
go
--无权限
insert into [RBAC_Operate] values(5,'无');
go
--'添加'、'读取'、'编写'权限
insert into [RBAC_Operate] values(5,'无');
go
等等。。。
如果是对不同“资源”的“权限分组”。需要看具体的“权限分组”数据是否稳定了。-_-!!我这句有点不像中国话了,不知道能明白我的意思不。总之要看具体需求来定了。
“关于角色分组”
这句话让我想起以前看过的资料里有过一个“星球大战原理”。
里边举过一个“爱捣乱的家伙”。“船长”在他本来的“角色”里加了一个限制条件。好象是“非站斗期间禁止他进入武器库”。但别的“普通船员”却可以。
(由于我没看过那个电影,记的不太详细。但好象大抵就是这么个意思。)
我也困惑了满长一段时间。最后我得出的结论是“爱捣乱的家伙”和“普通船员”的“角色”是不同的。他们所属的“组”相同。所以我感觉:角色还没有分组的必要。
“把上面的授权表整合到权限表中”
这个我考虑的不是很多。直觉告诉我还是分开可能更合适些。毕竟“权限表”中的数据相对来讲还是比较稳定的。“权限表”里的数据我们可以通过自己开发的程序在向数据库里插入数据的同时直接生成出对应的“权限类”。“授权表”里的数据变化会相对的比较剧烈。
“最后就是,扩展方面,可以考虑尝试从角色这方面下手,往“多维rbac考虑,毕竟现实系统当中,角色的分离是一件很费神的事情。”
我也感觉,实际的项目中可能回出现“大量”的“角色数据”的问题。但实际问题就是我们需要如此“细粒度”的权限控制。给角色分离会减少多少的数据呢?我想不出来。我没有看过“多维"rbac”的资料,这也可能是我不太能体会您真正表术的意思吧。总之,以我现在的能力就到这里了。谢谢回复。
good job!
写得不错,这里给您提点意见。
首先,组这个地方不仅用户可以分组,角色和权限也可以考虑分组。
其次,可以考虑把上面的授权表整合到权限表中去,那样可能在考虑角色的时候方便些。
最后就是,扩展方面,可以考虑尝试从角色这方面下手,往“多维"rbac考虑,毕竟现实系统当中,角色的分离是一件很费神的事情。
全是一家之言,博主可以随便看看,呵呵!
@Leem
我喜欢用脚本的理由就是:重建库时脚本有优势:)
@aspnetx
写完时我也去学习学习^__^
@无常
还是用SQL Server2005里的表的结构看吧.我家没装上SQL Server2005不然我就截图了,给各位带来的不便实在是不好意思了.
@凯恩
确实没有扩展.我是想把必要的部分,做到最小.最核心,也希望最稳定:)
@不告诉你
谢谢T-T
@喳喳鸟
其实我感觉,用文字描述内容会更多.也更不容易表述明白我想弄什么.
我一直对自己的表述能力有怀疑-_-!!下面我试着表述一下我脚本的内容吧.
对"资源"的"操作"产生"权限";
按照自己权限需求产生的权限的集合构成了"角色";
"用户"在不同的"组"里设置不同的"角色",来达到同一"用户"在不同的"组"具有不同的权限的控制能力.当然有必要的话"用户"在相同的"组"里也能够具有不同的权限的控制能力,根据"角色"来定了.
谢谢大家的回复:)
已阅,基本的RBAC实现,但没有进行扩展,你对资源的理解还有欠缺,给点小提示给你,资源你可以理解为对象,有不同细粒度可进行操作。--
正打算写类似的文章,没想到被楼主抢先
不过我要表达的与你的方式有一些区别
倒也不算冲突
呵呵,确实比较难懂,数据为设计为什么一定要通过脚本来实现了,不是有设计器的吗?何必!!!
对不起啊,大家.RBAC的思想网上有很成熟的文章.不是我懒的写,而是真的有很好的文章了,就是具体的实现我还没找到.我想写个比较稳定的生成权限管理系统核心数据库的脚本文件.这样大家就可以直接运行这个脚本就做完这部分的工作了.我对RBAC的理解也还不是很深刻,主要...
re: MemberShip(图) 馥馥 2007-01-03 21:13
共同继续研究,还是谢谢楼主!
re: MemberShip(图) 也算赌徒 2007-01-02 09:54
不好意思啊,我也很菜.我不敢乱讲,上边的图就是我对MemberShip数据库的字段的理解.没有其他内容了.
re: MemberShip(图) 馥馥 2006-12-30 13:04
本人菜,楼主能不能提供一些具体的解释!!!
re: 插分字符串并添加到数组里 也算赌徒 2006-12-26 15:12
@wuChang
@Jeffrey Zhao
谢谢两位的回复^O^
首先声明,我还是个初学者,去年的这个时候我还不知道c#怎么念那。以下是我当时写下前两段代码时的想法。首先,我需要一个通用的职能单一的方法,把一个字符串以空格为分隔符拆分出来,放在一个数组里。
@wuChang
我把这段代码拿出来,放在一个独立的文件里,主要是想要保持它职责的单一.加这层包装,(写getArray)这个方法,是想让代码的可读性更好一点,当然我的英文很差,可能并没有起到这个作用,但我的想法是这样的.
@Jeffrey Zhao & @wuChang
我在写这段代码的时候,开始是想先通过下面的方法获取我需要的数组的长度,实例化出来.也免的因为需要拆分的字符串太长,出现未曾预期的结果.
//通过获取空格的个数,得出需要实例化的数组的长度
public static int sumstring(string strIn,char strWhat)
{
char[] arr = strIn.ToCharArray(0, strIn.Length);
int sumstr = 0;
foreach (char c in arr)
{
if (c == strWhat)
sumstr += 1;
}
return sumstr;
}
后来想了想也不会太长>_<就把这方法又去掉了,决定先实例化一个空的数组出来,之后再把子项附加进去.所以就把初始化那硬编码了个"0".
参考了你们的建议,我对我的代码做了如下修改:
StringArrayAPI.cs
//获取一个string[]类型的数组
public string[] getArray(string[] strArray, string aString)
{
strArray = aString.Split(' ');
return strArray;
}
Default.aspx.cs
//输出数组的值
protected void Button1_Click(object sender, EventArgs e)
{
string[] strArray = null;
StringArrayAPI strArrayAPI = new StringArrayAPI();
strArray = strArrayAPI.getArray( strArray, this.TextBox1.Text);
for (int i = 0; i < strArray.Length; i++)
{
Response.Write(strArray[i].Trim() + "<br>");
}
}
谢谢你们的回复^O^
re: 插分字符串并添加到数组里 Jeffrey Zhao 2006-12-25 17:16
strArray = new string[arrayLenth];
strArray = aString.Split(' ');
return strArray;
这里第一行代码完全是多余的阿……
re: 插分字符串并添加到数组里 wuChang 2006-12-25 17:09
public string[] getArray( string[] strArray, string aString)
{
return strArray = aString.Split(' ');
}
这样不就行了吗?
再说,这个有必要再加这台包装吗
re: 提高分页效率 也算赌徒 2006-11-30 17:00
@有些伤感
受宠若惊!致敬!我刚还在考虑我放这个合不合适那.
@unnamed
谢谢^O^
re: 提高分页效率 unnamed 2006-11-30 16:59
good!
re: 提高分页效率 有些伤感 2006-11-30 16:46
欢迎^-^