【问题标题】:Records in which entity MS CRM 2011 creates as part of sharing process?作为共享过程的一部分,MS CRM 2011 在哪个实体中创建记录?
【发布时间】:2013-06-03 16:54:33
【问题描述】:

我在 MS CRM 2011 中使用自定义规则自动共享特定用户和团队的记录。但是用户可以使用 MS CRM 功能区上的按钮更改此共享信息,这将破坏我拥有的所有安全模型。

我认为应该是一种通过在服务器端使用插件来防止更新此信息的方法。但我不知道Update 事件我应该听哪个实体来捕获这个编辑事件?

用户共享实体时创建的实体记录在哪?

【问题讨论】:

  • 您知道使用共享来驱动安全模型的缺点吗? blogs.msdn.com/b/ukcrm/archive/2011/07/08/…
  • 谢谢!但是,如果我需要实现不符合标准的复杂模型,我还能做什么?
  • 团队通常会做到这一点,在管理方面有点繁重,但通常是最好的选择。
  • 这是团队的方法:我需要同时实现具有三个业务单元层次结构的安全模型。这是通过创建各自的团队并在他们身上分享来完成的。

标签: .net dynamics-crm-2011


【解决方案1】:

不是回答你的问题,而是:

用户只有在有权做的情况下才能分享。

这可以在安全角色中定义

如果您以编程方式共享记录,您还可以设置用户是否具有共享权限(与您通过 UI 设置时类似):

【讨论】:

  • 如果用户取消选中插图中的Read 复选框并按下OK,我会更加害怕。因为在这种情况下,一位用户将失去对记录的访问权限。
  • 如果用户没有共享权限,那么工具栏上的共享按钮甚至不应该是可见的,所以他们永远不会到达这个屏幕来取消选中阅读复选框。跨度>
【解决方案2】:

在黑暗中完全刺伤,但我相信GrantAccess 消息是你需要的。

看起来,每当用户尝试通过共享(尚未测试)授予访问权限时,插件就会触发,您可以检查他们是否有权限,然后取消请求。

only works on user owned entities,我猜你的就是这个。

如果他们是“取消共享”,您可能还需要注册 RevokeAccess

【讨论】:

  • 是的,可能你是对的,但是有没有任何示例如何为GrantAccess 消息创建插件?我正在尝试创建插件,但无论我做什么,它都不想触发。如果主要实体应该是 userteam 而次要实体是我试图授予用户访问权限的实体 - 不可能将 systemuser 设置为主要实体。如果我将lead 设置为主要并授予对潜在客户事件的访问权限,也不会触发。
  • 听起来没有那么诱人。 user-owned 术语是什么意思?这是否意味着只有当我授予对分配给我或任何用户的记录的访问权限时,插件才会触发?我相信user-owned实体意味着实体可以由任何用户拥有。与system-owned相反,比如PrincipalObjectAccess不能分配给用户。
  • @shytikov 这是您在创建实体时拥有的选项。我认为你的理解是正确的。您还可以看到,在向实体授予角色权限时,您只有空圆圈和全绿色圆圈作为选项,因为它不属于用户,它不能成为业务单位父子所有权层次结构的一部分,并且存在因为您看不到黄色饼片选项,或者半绿色圆圈或几乎完全绿色的圆圈。
  • 实际上,GrantAccess 似乎适用于每个实体。甚至没有分配给我。但我会完成代码并通知您结果。
  • 是的,我可以确认,GrantAccess 会向每个实体开火,无论它分配给谁。 PrincipalAccess 对象在 PluginExecutionContext.InputParameters 之中。
猜你喜欢
  • 2016-09-28
  • 2023-03-08
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多