如何为MS CRM 2011中的笔记提供基于角色的安全性

时间:2013-05-27 13:05:21

标签: c#-4.0 dynamics-crm

我正在研究MS CRM 2011中的Notes。

我在许多实体中扮演很多角色。 我想要基于角色的安全性来记录任何实体记录。

让我解释一下我想要的东西:

假设我有一个实体,即E1。 角色R1和R2具有对E1的读写访问权限。

但我希望拥有角色R2的用户只能上传和查看实体E1的任何记录的注释。

希望现在我的要求对你们所有人都很清楚。

请建议我如何使用MS CRM 2011实现它。

2 个答案:

答案 0 :(得分:1)

我可以想到两种方法来做到这一点。

  1. 您可以在创建/更新注释(注释)时创建插件,并检查注释是否与实体E1相关,并检查进行更改的用户的角色,看看他们是否只有R2角色。如果是这种情况,您可以使用“您没有权限编辑/创建这些记录”之类的消息抛出InvalidPluginExecutionException

  2. 您可以尝试使用基于角色的表单或JS来隐藏R1用户的备注区域。

  3. 你可能想要使用#1&的组合。 #2。用户仍然可以通过高级查找来访问笔记,因此可以编辑这些笔记。该插件也可以防止这种边缘情况。


    *编辑

    还有一些事情可以处理高级查找记录。您可以通过here所述的不支持的方法从高级查找中删除注释实体。

    否则,如果您想要阻止这些结果显示,并且您希望保持支持,则还可以执行一项操作。您可以在注释实体的Post-RetrieveMultiple上编写插件,以直接从返回结果中去除结果。但是有一些缺点。

    1. 每次在实体上调用检索倍数时,您都在执行插件。所以这段代码需要尽可能高效,因为最终用户在检索这些记录时会发现这种延迟。

    2. 高级查找等内容会显示奇怪的结果。例如,如果您的分页设置为50条记录并且您删除10条记录,则它们只会在其页面上看到40条记录,并且总记录数将包括您要删除的记录。

答案 1 :(得分:0)

通过角色我不知道如何做到这一点,因为您配置了对通用的注释的访问权限,因此适用于所有实体。您必须使用Javascript在DOM中导航进行访问。检查一个例子:

document.getElementById("notescontrol").contentWindow.document.getElementById("NotesTable")

您可以在浏览器中使用develeper工具进行检查。