2015-07-10 46 views
0

在我的Silverlight应用程序中,我有15个以上的屏幕。我想要一个权限组“CanOnlySeeTraining”不能访问除2个之外的所有屏幕。我知道我可以把代码放在下面,但事情是我必须把这个代码放在每个和每个屏幕上,除了我希望他们看到的那两个外。在Silverlight C#中有没有一种方法可以让顶部的权限流入屏幕树(如Windows文件夹权限)?让我知道你是否需要更多的澄清。谢谢。是否有一种简单的方法可以将组限制在2个屏幕上?

partial void <ScreenName>_CanRun(ref bool result) 
    { 
     if (this.User.HasPermission(Permissions.CanOnlySeeTraining)) 
     { 
      result = false; 
     } 
     else 
     { 
      result = true; 
     } 
    } 

回答

0

我们不这样做完全是,但是......我们的应用程序的“活动ID”分配给每个窗口(或批处理过程中,我们有几个),并启动在每一个标准部分是检查用户的权限组是否有权访问该活动。我们有一个通用的功能,比较组&活动,以确定是否允许该组合;该函数只是返回一个标志值,表示启动是否应该继续。 全部使用'启动允许'检查功能,只有在特别允许的情况下才会继续。没有人需要像您的样本一样进行任何特定的检查,他们只需要知道是否允许他们现在继续。

我们的关系数据保存在数据库表中,但将它移到文件中是相当简单的。

我们的实现依赖于继承来确保检查函数不会被跳过,只有少数基础对象(我认为两个)实际上具有编码检查。

+0

谢谢戴夫。你能详细说明一下,或者提供关于你如何做的代码示例?谢谢。 – ray500

+0

我们有一个表定义了受控活动(通常是应用程序屏幕),另一个定义用户和用户组的对,一个将用户链接到组的组,以及一个将受控活动与用户组和权限级别关联的最终链接表,只读,修改,创建或监督(用于需要审批的工作流程))。有标准代码可以检查用户对活动的权限,并适当地设置屏幕级别的对象权限。如果他们没有屏幕权限,则不会出现在任何菜单中。 – DaveE

相关问题