私有类别
“私有类别”功能允许管理员将特定类别标记为“私有”。如果将类别设置为私有,则该类别或其任何子文件夹中的所有资产都将受到保护。
标记为“私有”的类别需要特殊授权才能查看或下载其中的资产。
CKBox 通过其 UI 自动处理资产的授权流程。
# 将类别设为私有
- 要将类别设为私有,请转到 CKBox 管理面板的“设置”部分。
- 选择“资产类别”选项卡。
- 单击要设为私有的类别的“编辑”按钮。
- 选中
将此类别设为私有
复选框,然后保存。
- 私有类别在类别列表中标记为
私有
注意:将类别设为私有后,访问该类别中的所有资产都需要额外的授权。
如果未执行预授权,这可能会导致嵌入内容出现故障。
# 授权流程
要访问私有类别中的资产,用户必须使用来自令牌端点的有效 JWT 向/authorize
端点发出 API 请求,以获取授权 cookie。
用于授权的 cookie 是使用 CHIPS(具有独立分区状态的 cookie)的分区 cookie。它们确保对受保护资源的安全和范围访问。
授权后,具有适当权限的用户将能够预览或下载资产。
获取授权 cookie 的步骤
- 向
/authorize
端点发送带有Authorization
头部的 JWT 的 GET 请求。 - 确保在 fetch 请求中使用
credentials: include
,以允许浏览器处理服务器返回的任何Set-Cookie
头。 - 如果 JWT 有效,响应将在浏览器中设置一个 cookie(
CKBox-Auth
或__Host-CKBox-Auth
),然后将用于后续对受保护资源的请求。
const formData = new FormData();
formData.append('token', {{JWT}});
fetch('https://{{CKBOX_API}}/categories/authorizePrivateAccess', {
method: 'POST',
mode: 'no-cors',
body: formData
credentials: 'include' // Ensures cookies are handled
})
.then(response => {
if (!response.ok) {
throw new Error('Authorization failed');
}
});
# 访问控制流程
- 用户首先通过令牌端点获取 JWT。
- 用户向
/authorize
发出请求以接收授权 cookie。浏览器将 cookie 附加到所有与获取资产内容相关的后续 API 调用。 - 系统检查用户的权限,以确保他们有权访问私有类别。
- 使用授权 cookie 和有效权限,用户可以访问和下载资产。
# 用例示例:具有敏感嵌入内容的 CMS
具有处理包含嵌入内容(如图像或文档)的敏感信息的 CMS。为了确保这些敏感数据受到保护,管理员可以将包含这些资产的某些类别标记为“私有”。这意味着嵌入在 CMS 内容中的所有资产都需要适当的授权才能访问。
在这种情况下
- 只有在 CMS 中具有有效会话的用户才能通过使用
GET:/authorize
端点进行预授权来访问嵌入的资产。 - 可以在用户登录后立即进行
/authorize
调用,以确保敏感内容对授权用户可见。当用户注销时,可以清除授权 cookie,撤销访问权限。 - 如果尝试在没有适当授权的情况下访问 CMS 外部的内容,CKBox 将返回 401 未授权错误。