如何限制对 MS Dynamics CRM 实体列表中特定项目的访问

How to restrict access to specific item in entity list in MS Dynamics CRM

我有几个自定义实体。有两个用户:user1user2

对于一种实体类型,我在列表中有 2 个项目。

我只需要为 user1 显示一项,为 user2 显示第二项。

我尝试通过共享对话框管理权限,但它只能限制写权限,但我需要从列表视图中隐藏项目。

我该怎么做?

你可以用两个解决方案来完成这个功能。

解决方案一:使用字段安全配置文件,在这个解决方案中,您必须在字段自定义中启用字段安全选项,然后转到自定义>自定义系统>字段安全配置文件,然后您可以看到启用字段的字段上一个会话中的安全选项,然后单击新按钮和 select 用户 1 和 select 您想要的权限选项在为字段 1 读取更新创建和与字段 2 和用户 2 相同之间。(注意:此选项仅在用户没有管理员安全角色时有效。)

解决方案 2:您可以使用 Javascript 并在客户端处理此操作。首先,您必须转到自定义表单并添加新库并添加此代码。

function onload() 
{
    checkUser(); 
}  

function checkUser() 
{
    var userID = Xrm.Page.context.getUserId();
    if( userID == "user1 id")
    {
        Xrm.Page.getControl("field1").setVisible(true);
        Xrm.Page.getControl("field2").setVisible(false);
    }
    else if( userID == "user2 id")
    {
        Xrm.Page.getControl("field1").setVisible(false);
        Xrm.Page.getControl("field2").setVisible(true);
    }
}

然后在加载事件的表单中调用 onload 函数,一切都很好:)

希望你的问题得到解决:)

CRM 安全模型使用安全角色限制对记录的访问。您可以使用本地读取权限设置您的自定义实体,这只允许用户访问他们拥有的读取记录。

User1 将拥有 Record1,而 User2 将拥有 Record2。

或者,您也可以考虑拥有一个业务单位层次结构,它也可以细分数据的可见性。

查看 How role-based security can be used to control access to entities in Microsoft Dynamics CRM and The security model of Microsoft Dynamics CRM 了解更多信息。