以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 重开一贴,继续讨论角色授权的问题,请BIN老师、狐爸进来指点下! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=32886) |
||||
-- 作者:wengfuyy -- 发布时间:2013/5/9 21:44:00 -- 重开一贴,继续讨论角色授权的问题,请BIN老师、狐爸进来指点下! 我想继续对角色授权与用户授权的区别作以下分析,以此证明用户授权的代码是不适用于角色授权的。 我先申明,对于每个用户都只属于一个角色的情况,BIN老师的代码是可行的。 下面主要想分析下一个用户属于两个角色时权限叠加的情况。 还是先说用户授权方式吧,如下图: 再看角色授权方式的情况,如下图: ![]() ![]() 现在的情况是王五同时拥有“角色一”和“角色二”两个权限。对于表A的第三列而言,虽然角色一是不可见,但是由于对角色二是可见的,所以叠加后的权限王五来说是可见的;再看表A的第八列,对于角色一是可以编辑的,对于角色二是不可编辑的,叠加后权限王五来说是可编辑的。 所以,得到的最终结果是:表A的对王五是无任何限制的,是即可见,又可编辑的。 这与第一个图所说的用户授权区别是非常大的。所以,对于角色授权来说,代码肯定是要重新编写的。 希望BIN老师继续改进和完善。 也希望狐爸出来说句话,我们都花了这么多脑细胞,也希望你出来说句权威的话吧!!!
|
||||
-- 作者:程兴刚 -- 发布时间:2013/5/9 21:52:00 -- 将角色保存在用户管理中,多个角色用分隔符隔开,授权时循环根据角色调用,您的问题将会迎刃而解! |
||||
-- 作者:wengfuyy -- 发布时间:2013/5/9 22:53:00 -- 回程老师:目前BIN老师的方案就应该你说的这样的,但是不行。 我认为你们还是没有仔细分析过角色授权的细节。
|
||||
-- 作者:程兴刚 -- 发布时间:2013/5/9 23:34:00 -- 呵呵,那您就自己分析吧! |
||||
-- 作者:实话实说 -- 发布时间:2013/5/10 0:18:00 -- 将第2表的角色二改为角色一,将角色一授予王五不就行了。设计角色授权方式时不能将几个矛盾的角色赋予用户。 |
||||
-- 作者:程兴刚 -- 发布时间:2013/5/10 2:49:00 -- 用户管理表:
用户ID 用户姓名 用户角色 001 张三 角色1,角色2 002 李四 角色2 003 王五 角色1,角色3 …… …… ……
角色设置表: 角色名称 表名称 列名称 编辑 可视 角色1 表A 第一列 true true 角色1 表A 第二列 false true 角色2 表A 第三列 false true 角色3 表B 第一列 false true 角色3 表B 第二列 true true
授权表: 用户ID 用户姓名 用户角色 表 列 编辑 可视 001 张三 角色1 表A 第一列 true true 001 张三 角色1 表A 第二列 false true 001 张三 角色2 表A 第三列 false true 002 李四 角色2 表A 第三列 false true 003 王五 角色1 表A 第一列 true true 003 王五 角色1 表A 第二列 false true 003 王五 角色3 表B 第一列 false true 003 王五 角色3 表B 第二列 true true …… …… ……
摆弄好上面三张表,权限校验时find该用户授权表中符合条件的行,找到即通过,找不到则没有权限,其他的不用我再多说!
现在您在回过来看我是不是没经过研究只管给您说大白话!
|
||||
-- 作者:程兴刚 -- 发布时间:2013/5/10 2:51:00 -- 这样做,您甚至可以指定角色,同时添加多个非固定角色的其他独立授权,应用起来更加灵活多变! |
||||
-- 作者:wengfuyy -- 发布时间:2013/5/10 11:04:00 -- 谢谢! 是的,我认为程版主目前的分析是对的,这也证明我之前的说法:角色授权的复杂性要远远高于用户授权,不能套用原来的代码,甚至授权表都要重新规划。程版主的方案中,将原来“不可见、不可编辑”改成了“可视、编辑”,便是证明。 但是,我认为程版主的第三张“授权表”应该是前两张表通过代码生成的,如果再手工去维护这张表,就冗余了。
下面,我抛砖引玉,阐述下我对后续的设计思路,可能还不成熟,不对之处请指正: 一、不能使用原来用户授权中逐条引用授权表里的内容去逐条进行权限设置的思路,借用上面的表格,稍作修改,分析如下: 授权表: 用户ID 用户姓名 用户角色 表 列 编辑 可视 001 张三 角色1 表A 第一列 true true 001 张三 角色2 表A 第一列 false true 如果采用逐条设置权限的方法,最后的结果是:张三对表A的第一列是没有编辑权限的,但实际上,这两权限叠加的结果是:他应该是有这个权限的。 二、设计思路:要将该用户对同一表,或者同一列的权限进行逻辑”或“运算后,将得到的结果一次性设置。就拿上表来说吧: 张三在角色1中对表A第一列的编辑权是true(1),在角色2中对应的权限是false(0),那么:根据 0+1 = 1,所以张三对表A第一列的最终权限是true(1),根据这个结果进行设设置即可。 三、希望狐表公司能拿出最终的解决方案和代码,让用户能够稍加修改就使用,而不是在这里进行学术交流。 再次谢谢! |
||||
-- 作者:wengfuyy -- 发布时间:2013/5/10 11:12:00 -- 以下是引用实话实说在2013-5-10 0:18:00的发言: 将第2表的角色二改为角色一,将角色一授予王五不就行了。设计角色授权方式时不能将几个矛盾的角色赋予用户。 你的说法是不对的。
|
||||
-- 作者:Bin -- 发布时间:2013/5/10 11:22:00 -- .
可能我没明白你想表达的情况,根据你图片的的情况.是不会冲突的.
|