Foxtable(狐表)用户栏目专家坐堂 → 请教狐爸们,关于使用角色进行可视化授权的问题?


  共有6528人关注过本帖树形打印复制链接

主题:请教狐爸们,关于使用角色进行可视化授权的问题?

帅哥哟,离线,有人找我吗?
wengfuyy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
请教狐爸们,关于使用角色进行可视化授权的问题?  发帖心情 Post By:2013/5/8 0:09:00 [显示全部帖子]

今天看到了帮助里关于可视化授权的例子,感觉太高兴了,正当我准备造成我的程序时,发现我是使用角色作为授权的,我感觉大多数的软件都应该是用角色作授权,而用组作为部门和单位。
所以想请狐爸们帮忙改造一下下面的代码,改成用角色来授权的。先谢谢了。

Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If
User.Type = UserTypeEnum.User Then
   
For Each dr As DataRow In DataTables("授权表").Select("分组名 = '" & User.Group & "'" )
        If
dr.IsNull("列名")
Then
           
Tables(dr("表名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).AllowEdit = Not dr("不可编辑")

        Else
           
Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End
If
    Next
End
If

 回到顶部
帅哥哟,离线,有人找我吗?
wengfuyy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
  发帖心情 Post By:2013/5/8 12:43:00 [显示全部帖子]

谢谢回复。帮助我已经看过多遍了,感觉用角色授权还是要复杂些,但应用范围更广。凭我目前的水平还写不出来,所以想请老师帮忙。最好是作者能写出来加入到帮助文档里。

 回到顶部
帅哥哟,离线,有人找我吗?
wengfuyy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
  发帖心情 Post By:2013/5/8 23:12:00 [显示全部帖子]

谢谢BIN老师!
感觉你编程的水平非常高,特别是像这种写法——User.Roles.split(","),值得我好好学习。但我有还有疑问:
对于一个人同时属于两个(或以上)角色的情况,权限的叠加后,与原来代码要反映的情况是有很大差别的,还是拿帮助中王五的例子来说吧:

图片点击可在新窗口打开查看此主题相关图片如下:f08.png
图片点击可在新窗口打开查看
如果是按用户名或者用户分组,王五以上两个权限综合后的结果是:他看不到表A的第三列,不能编辑表A的第八列。通过帮助中的以上代码得到了实现。
但是,如果我们换成角色,如下图

图片点击可在新窗口打开查看此主题相关图片如下:f07.png
图片点击可在新窗口打开查看
假设还是王五,同时属于角色一和角色二。根据分析,我认为综合后的权限是:王五对表A具有全部权限,即既可见,又可编辑。这显然与上面的情况不同,所以不能用相同的代码来实现。
如果我以上的分析没有错的话,希望BIN老师能继续修完善下代码。相信凭你的水平,要做好是没问题的。听说易表里是有可视化授权的,但不知知道有没有针对角色的功能。如果做好了,我希望能放到帮助文件里,使之能够惠及更多的学员。
谢谢!
[此贴子已经被作者于2013-5-8 23:21:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
wengfuyy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
  发帖心情 Post By:2013/5/9 8:57:00 [显示全部帖子]

请问有没有用过易表的朋友?易表的可视授权能处理角色吗?如果能,借用过来不就行了吗?


 回到顶部
帅哥哟,离线,有人找我吗?
wengfuyy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
  发帖心情 Post By:2013/5/9 9:03:00 [显示全部帖子]

以下是引用zerov在2013-5-9 7:19:00的发言:
同求,例如分组中有“总部、北京分公司、天津分公司”,角色中有总经理、经理、主管、员工,如果实现登录用户如果是总部员工,则可见所有表的所有行,如果是北京分公司的员工,则只可见所有表的北京分公司的数据,如果实现?
你这个问题跟我的不是一回事,要简单多了。你的是针对“行”的授权,很容易实现,从这里开始学习吧:http://www.foxtable.com/help/topics/2247.htm


 回到顶部
帅哥哟,离线,有人找我吗?
wengfuyy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
  发帖心情 Post By:2013/5/9 9:12:00 [显示全部帖子]

回BIN老师:
我测试了前半段代码,情况是这样的:如果我同属角色一和角色二,那么生成的字符串是:  ,'角色一','角色二'
不知老师要的是不是这个效果?
另外,关于后半段,请老师先看一下我关于权限的分析,如果认可,那就不用测试了,如果我分析的是错的,请你指正下,谢谢。


 回到顶部
帅哥哟,离线,有人找我吗?
wengfuyy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
  发帖心情 Post By:2013/5/9 9:45:00 [显示全部帖子]

谢谢BIN老师,我去测试一下,待会向你汇报。

 回到顶部
帅哥哟,离线,有人找我吗?
wengfuyy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:918 威望:0 精华:0 注册:2013/4/12 2:00:00
  发帖心情 Post By:2013/5/9 21:04:00 [显示全部帖子]

回BIN老师:
我试过了,如果所有用户都只属于一个角色,那么你的代码是对的。但是,如果有人属于两个及以上的角色就不对了。
原因就是我在5楼分析的。
我感觉按角色授权确实要复杂得多,也许授权表的格式都要重新设计。
希望BI老师能够继续完善,评你的水平应该是没问题的。
这真是一个造福于大众的事,你就辛苦下吧,拜托了!

这贴太长了,我重开了一贴,希望BIN老师继续指导!
[此贴子已经被作者于2013-5-9 21:44:50编辑过]

 回到顶部