在 Salesforce 的 Experience Cloud 中,您可以通过多种方式控制站点用户(如社区用户)之间的可见性。这包括用户之间的信息可见性以及他们可以访问的其他用户数据。以下是几种方法和设置,用于实现对 Experience Cloud 站点用户可见性的控制:
1. 用户可见性设置
Salesforce 提供了两种主要的用户可见性设置,用于控制社区用户之间的数据共享:
(1) Portal User Visibility
- 定义:控制社区用户是否可以看到与他们共享同一个账户的其他社区用户。
- 设置路径:
- 转到 Setup → Sharing Settings。
- 在 Sharing Settings 页面中,找到 Portal User Visibility。
- 启用/禁用该设置:
- 启用时:站点用户可以看到与其账户相关的其他用户。
- 禁用时:站点用户无法看到其他社区用户。
- 适用场景:适合需要在同一账户中进行用户协作(如合作伙伴)的场景。
(2) Site User Visibility
- 定义:控制社区用户是否可以看到站点内的其他社区用户(即不局限于同一个账户的用户)。
- 设置路径:
- 转到 Setup → Sharing Settings。
- 在 Sharing Settings 页面中,找到 Site User Visibility。
- 启用/禁用该设置:
- 启用时:站点用户可以看到社区中其他站点用户的信息。
- 禁用时:站点用户仅能访问与其直接相关的数据。
- 适用场景:适用于大规模社区,通常希望用户之间隔离时。
2. 使用共享规则 (Sharing Rules)
如果需要更精细的控制,可以使用 共享规则 来定义用户之间的数据可见性:
- 适用对象:Contacts、Accounts 或自定义对象。
- 设置路径:
- 转到 Setup → Sharing Settings。
- 在需要控制的对象(如用户或联系人)部分,定义共享规则。
- 配置规则:
- 指定哪些用户组可以共享数据。
- 定义共享的权限级别(如 Read Only 或 Read/Write)。
- 使用示例:
- 将某个特定角色或组的用户数据共享给另一个角色或组。
3. 基于角色的可见性
通过 角色层级(Role Hierarchy) 控制社区用户之间的数据可见性:
- 定义:允许更高角色的用户自动访问其下级用户的数据。
- 设置路径:
- 转到 Setup → Roles。
- 配置社区用户的角色层级关系。
- 适用场景:
- 管理员希望社区中的经理能够查看其团队成员的数据。
4. 用户档案与权限集
通过 用户档案(Profile) 和 权限集(Permission Set) 控制用户之间的访问权限:
- 定义:通过限制用户对特定对象、字段或记录的访问权限来实现数据隔离。
- 设置路径:
- 转到 Setup → Profiles 或 Permission Sets。
- 配置用户的对象权限和字段权限。
- 使用示例:
- 限制某些社区用户无法访问其他用户的详细信息(如电子邮件地址)。
5. Community Visibility 配置
可以在 Experience Builder 中通过组件设置控制用户可见性:
- 方法:
- 打开 Experience Builder。
- 在页面上选择需要显示用户列表或用户数据的组件。
- 配置组件的可见性规则(Visibility Rules),例如:
- 基于用户角色。
- 基于登录状态。
- 基于自定义字段值。
- 适用场景:
- 仅向特定用户类型显示其他用户的信息。
6. 限制通过 Apex 或自定义逻辑控制可见性
通过自定义 Apex 或触发器,可以更细粒度地控制用户之间的数据访问:
- 使用场景:
- 需要动态调整用户可见性,例如基于用户行为或特定条件。
- 示例代码:
public with sharing class CommunityUserVisibilityController { public List<User> getVisibleUsers() { // 自定义逻辑,返回当前用户可以查看的用户列表 return [SELECT Id, Name FROM User WHERE ...]; } }
常见场景与解决方案
场景 | 解决方案 |
---|---|
用户只能看到与其账户相关的其他用户 | 启用 Portal User Visibility 或设置共享规则来共享同一账户的数据。 |
用户只能看到某些特定用户的数据 | 使用 共享规则 或 Visibility Rules 定义特定用户组之间的数据共享。 |
用户不能看到任何其他用户的信息 | 禁用 Site User Visibility,并限制对象权限或字段级别权限。 |
管理员需要查看所有用户的数据 | 利用 角色层级 或创建特定的管理员共享规则。 |
动态调整用户之间的可见性 | 使用 Apex 或 Lightning Data Service(LDS)创建自定义逻辑。 |
参考:https://help.salesforce.com/s/articleView?id=platform.networks_user_sharing.htm&type=5