指南角色和权限

# 角色和权限概述

由于 CKEditor 云服务会对用户进行身份验证并验证其身份,因此必须提供有关用户可以访问哪些部分的信息。为此,CKEditor 云服务使用 令牌 和权限机制。

为了简化和方便提供有关权限的信息,CKEditor 云服务使用角色。角色包含一组描述用户可以执行和不能执行的操作的权限。为了更细粒度的访问控制,可以定义权限并使用这些权限而不是角色。也可以同时使用角色和权限来创建自定义访问解决方案。

有关角色的所有信息都应包含在 令牌 中。

# 轻松插入图片的角色

无需为轻松插入图片指定任何角色,因为它们会分配给环境。这意味着属于该环境的每个用户都允许上传图片。上传后,图片将公开,并且可以不受限制地下载。

# 导出为 PDF 和导出为 Word 的角色

无需为 PDF 和 Word 转换器指定任何角色。属于启用了转换器的环境的每个用户都允许使用它们。

# 协作角色

用户仅被授权访问 auth.collaboration 中列出的文档,并且在每个文档中可能具有不同的角色。

{
    "auth": {
        "collaboration": {
            "doc-1": {
                "role": "reader"
            },
            "doc-2": {
                "role": "commentator"
            },
            "doc-2": {
                "role": "writer"
            }
        }
    }
}

应通过提供用户被授权访问的文档的 ID 或 模式(如果用户可以访问一组文档)来指定文档列表。

有效的文档 ID 应仅包含字母、数字和连字符。

# 角色

每个角色包含一组描述用户可以执行和不能执行的操作的权限。

CKEditor 云服务提供以下 3 种角色

  • reader – 具有此角色的用户对文档具有只读访问权限。这意味着用户未被授权对文档进行任何更改(包括添加评论)。此角色包括以下权限类型:document:readcomment:read
  • commentator – 具有此角色的用户对文档具有只读访问权限,但被授权评论。这意味着用户不允许修改文档的内容,但允许留下评论。此角色包括以下权限类型:document:readcomment:readcomment:write,并且允许执行以下操作
    • 创建新的评论线程,
    • 删除自己的评论线程,
    • 在所有现有评论线程中添加评论,
    • 删除和修改所有现有评论线程中的自己的评论,
    • 解析和重新打开任何评论线程(在评论存档中)。
  • writer – 具有此角色的用户对文档具有完全访问权限。这意味着用户被授权对文档进行任何更改(包括添加评论)。此角色包括以下权限类型:document:readdocument:writecomment:readcomment:writecomment:admin,并且允许执行以下操作
    • 创建新的评论线程,
    • 删除所有评论线程,
    • 在所有现有评论线程中添加评论,
    • 删除和修改所有现有评论线程中的自己的评论,
    • 解析和重新打开任何评论线程(在评论存档中)。

请注意:以上所有角色都不允许删除或修改其他用户创建的单个评论。要获得此权限,请包括 comment:modify_all 权限。

# 权限

为了更细粒度的访问控制,CKSource 云服务使用权限而不是预定义角色。此功能自 CKEditor 5 v29.0.0 起可用。

CKEditor 云服务提供五种权限类型

  • document:read – 具有此权限类型的用户对文档具有只读访问权限。这意味着用户未被授权对文档进行任何更改(包括无法评论)。
  • document:write – 具有此权限类型的用户被授权修改文档的内容。此权限还允许用户通过删除带有评论线程标记的内容来隐式解析评论存档中的任何评论线程。此外,它允许通过执行撤消操作来隐式重新打开任何评论线程。
  • comment:read – 具有此权限类型的用户对文档的评论具有只读访问权限。这意味着用户未被授权添加新的评论或编辑现有的评论。
  • comment:write – 具有此权限类型的用户被授权添加新的评论、编辑和删除他们自己的评论和评论线程。此外,它允许在评论存档中解析和重新打开任何评论线程。
  • comment:admin – 具有此权限类型的用户可以删除任何用户添加的评论线程。但是,此权限不允许删除或修改其他用户创建的单个回复。要利用此权限,用户必须还具有 comment:write 权限。
  • comment:modify_all – 具有此权限类型的用户可以删除或修改其他用户添加的评论。但是,此权限不允许删除其他用户创建的整个评论线程。
{
    "auth": {
        "collaboration": {
            "*": {
                "permissions": [
                    "document:read",
                    "document:write",
                    "comment:read"
                ]
            }
        }
    }
}

所述权限仅授权用户执行所述操作。例如,document:write 权限,它授权用户修改文档的内容,不包括 document:read 权限。这意味着,document:read 权限也应包含在权限列表中,以授权用户阅读文档。comment:admin 权限也不例外。

# 混合角色和权限

在某些情况下,混合使用预定义角色和权限会很方便。

示例:以下示例定义了一个用户,该用户在所有文档中具有 commentator 角色,此外,该用户还具有 comment:admin 权限,该权限允许删除其他用户添加的评论线程。

{
    "auth": {
        "collaboration": {
            "*": {
                "role": "commentator",
                "permissions": [
                    "comment:admin"
                ]
            }
        }
    }
}

# 模式

模式有助于确定对一组文档的权限。您可以提供包含通配符字符而不是文档 ID 的模式。然后,该模式将涵盖多个文档 ID。

示例:以下示例定义了一个用户,该用户在所有与模式 docs-* 匹配的文档中具有 reader 角色。匹配文档的示例可以是:docs-titlepagedocs-category-document

{
    "auth": {
        "collaboration": {
            "docs-*": {
                "role": "reader"
            }
        }
    }
}