FastComments.com

什么是访问控制? Internal Link

通过 FastComments SSO 访问控制(有时称为 RBAC),可以限制用户仅访问某些页面或评论线程。此外,用户只能在相同组内相互 @mention

详细说明

我们可以将 Users 和可选的 Pages 放入组中。

Users 被放入组中,并且在小部件设置中启用了 Limit Comments by SSO User Groups 时,用户将只能看到来自其相同组中用户的评论,并且只能 @mention 相同组中的用户。

此外,Pages 也可以被分配到组中,那么用户只能访问他们有权限访问的页面的评论。

我们称之为“用户级别”组与“页面级别”组。

那么哪一种适合您?

如果符合以下情况,请使用用户级别组...

  • 您希望使用相同的 urlId 值(页面 URL,或文章 ID),但按组限制评论。
  • 例如,您希望有“新用户”和“资深用户”两个组,并且他们在相同页面上永远看不到对方的评论。

如果符合以下情况,请使用页面级别组...

  • 您的组有特定的页面。
  • 例如,属于“公开页面”组的用户永远不应查看“绝密”文章。

工作原理 Internal Link

FastComments 访问控制通过将 PagesUsers 分配到所需的组来工作。

组只是一个字符串标识符,例如 GREENabc-123

UsersPages 不仅限于一个组。它们分别限制为 1001000 个组。

访问未授权页面

如果用户尝试访问他们无权访问的页面,将看到如下错误消息:

授权失败示例
Authorization Failure Example

该消息文本可自定义。

规范 Internal Link

定义多个用户如何交互并进行测试是很复杂的。以下是我们用于访问控制的规范,您可以使用它来测试您的实现:

页面 的 group ids 为 null,用户 的 group ids 为 null - 应该有访问权限。
页面 的 group ids 为 null,用户 有 group ids - 应该有访问权限。
页面 有 group ids,用户 的 group ids 为 null - 应该有访问权限。
页面 有 group ids,用户 的 group ids 为 empty list - 不应该有访问权限。
页面 有 group ids,用户 有 group ids - 存在交集 - 应该有访问权限。
页面 有 group ids,用户 有 group ids - 不存在交集 - 不应该有访问权限。
页面 的 group ids 是 empty list(无人有访问权限),用户 为 null - 不应该有访问权限。

SSO User A = No group ids defined (null = full access).
SSO User B = No group ids defined (null = full access).
A can @B.

SSO User A = No group ids defined (null = full access).
SSO User B = Group ids defined.
A can @B.

SSO User A = Group ids defined.
SSO User B = No group ids defined (null = full access).
A can @B.

SSO User A = Group ids = [a].
SSO User B = Group ids = [b].
A can NOT @B.

SSO User A = Group ids = [a].
SSO User B = Group ids = [a, b].
A can @B.

实现 Internal Link

在其他组中提及用户

如果两个用户属于两个不同的组集合,且没有交集,他们将无法相互 @mention

如果用户手动输入 @mention 并提交评论,它将保持为纯文本。另一位用户不会被标记。

管理组

Groups 是分别使用 PagesSSOUsers API 资源定义的。

可以调用 Pages API 来定义被允许访问该页面的组集合。默认情况下,所有组,和不 属于任何组的用户,都有访问权限。

同样,可以调用 SSOUsers API 来定义与每个用户关联的组。

对于这两个资源,设置或更新组的时间没有限制。

如果仅希望限制用户相互 @mention,那么 Pages 无需被考虑。

注意!

定义和更新 SSO 用户组不需要使用 API,而可以通过在传递给评论小部件的 SSO payload 中定义 group ids 来自动更新。然而,对于大量的组列表,这不建议,因为用户 必须为每次页面加载提交此 payload。