DRM-X 6.0 鸽子和橄榄枝标志DRM-X 6.0文档
◎ 简体中文

Django 受保护视频

使用 Django 身份验证和您自己的权限回调。DRM-X 包不会创建视频表或访问授权表。

查看 Markdown在线示例更新于 2026-09-25
下载此平台集成包

包含预览版 SDK、应用示例和源码。请保留解压后的目录结构。

所有平台与完整集成包 · 了解集成流程

需要自定义的三个位置#

  1. 配置settings.py

    添加 drmx 并配置 DRMX,包括 AUTHORIZE。

  2. 授权

    您的应用:drmx_access.py

    基于现有系统实现 authorize(user, video_id)。

  3. 路由urls.py

    包含 drmx.urls;复用正常的登录和 CSRF 中间件。

1. 安装 wheel 包#

# From the extracted kit root:
python -m pip install packages/python/drmx_django-1.3.0rc13-py3-none-any.whl

使用 Python 3.12+ 和受支持的 Django 版本(5.2–6.0)。将 drmx 添加到 INSTALLED_APPS。保留身份验证、会话和 CsrfViewMiddleware。新安装不需要运行 DRM-X 迁移命令;您自己的应用仍可能需要正常迁移。

2. 配置设置和路由#

# settings.py — keep your existing application settings
DRMX = {
    'SITE_ID': os.environ['DRMX_SITE_ID'],
    'SITE_KEY': os.environ['DRMX_SITE_KEY'],
    'ACCESS_KEY': os.environ['DRMX_ACCESS_KEY'],
    'INSTANCE_ID': 'my-website',
    'POLICY': 'multi-tier-standard',
    'AUTHORIZE': 'myapp.drmx_access.authorize',
}
# urls.py — add to your existing urlpatterns
path('video/', include('drmx.urls'))

照常在 settings 中导入 os,在 urls 中导入 path/include。将 myapp 替换为您的应用模块。

3. 返回允许访问的内容#

创建 myapp/drmx_access.py。下方数据访问调用仅作示例;请使用您当前的购买、会员或课程报名查询。

def authorize(user, video_id):
    video = customer_catalog.find_authorized_video(user.id, video_id)
    if video is None:
        return None
    return {'content_id': video.drmx_content_id,
            'content_type': 'vod', 'title': video.title}

首次本地测试时,可仅允许一个现有测试用户访问一个网站视频 ID,然后返回已发布的 Content ID。此临时允许规则只能用于本地测试。随附的 examples/sdk/django/authorization.py 在您实现权限检查前会拒绝所有用户。

在生产环境中,每次调用都应查询数据库。权限不存在、已到期或已撤销时,返回 None。省略策略时使用已配置的默认策略。

4. 登录并打开播放器#

使用您选定的网站视频 ID 打开 /video/lesson-123/。支持字符串 ID 和 UUID。SDK 提供播放器页面和会话端点,并在每次请求时重新执行回调检查。

保留正常的 Django 保护机制#

保留随附的 CSRF 验证和同源端点。当前播放器通过端点 URL 传递经过掩码处理的 CSRF 令牌;请勿将其查询字符串写入访问日志,并保持 no-store/no-referrer 行为。使用 HTTPS 和安全的会话 cookie。

从带有 DRM-X 数据表的旧版升级?请保留迁移历史,并在移除旧应用前阅读 legacy/README.md。新 SDK 不会删除这些数据表。

上线前检查#

  • 以有权限的用户登录,并在支持的浏览器中播放已发布的视频。
  • 测试未登录和未付费用户,再测试权限被撤销或到期的情况。新的会话请求必须被拒绝。
  • 尝试修改浏览器中的 Content ID 或网站视频 ID。服务器必须检查新的选择。
  • 设置准确的公共 HTTPS 源,保留框架的会话/CSRF 保护,并禁用演示身份代码。

已有会话和 DRM 许可证具有各自的有效期。新请求会检查权限变更,但不会清除已经签发的许可证。