# Django 受保护视频

结合 Django 身份验证、管理员维护的视频映射和有时间限制的访问授权，集成 Universal Player。

播放授权的流程

您的后端决定谁可以观看。DRM-X 提供播放授权，播放器使用该授权请求 DRM 许可证。

- 01**观看用户**

登录您的服务并请求播放视频。

- 02**您的后端**

检查用户的购买记录、订阅状态或其他观看权限。

- 03**DRM-X**

应用所选播放规则，返回播放配置和授权信息。

- 04**播放器**

使用返回的授权信息，请求播放所需的 DRM 许可证。

您的后端判断用户是否有权观看，DRM-X 执行签名授权中的播放策略。加密媒体与 DRM 许可证通过各自的服务传送给播放器。

## 安装 Django 应用[#](#install)



将源码包中的 django 目录安装到应用环境。在 INSTALLED_APPS 中加入 drmx，引入 drmx.urls，启用 Django 会话和身份验证中间件，然后执行数据库迁移。请保持 CsrfViewMiddleware 启用。



```
pip install ./django
python manage.py migrate
# urls.py
path("protected/", include("drmx.urls"))
```



[下载第三方平台集成源码](https://drm-x6-cdn.1aicloud.com/drmx-frameworks-1.3.0-preview.2-f4ee10f26cdf.zip)





## 配置凭据与内容[#](#configure)



在 settings.DRMX 中配置 SITE_ID、SITE_KEY、ACCESS_KEY、INSTANCE_ID，以及可选的 POLICY。密钥应从主机环境加载。INSTANCE_ID 是稳定的站点标识，用于区分不同应用中的播放用户标识。



在 Django admin 中打开 Protected videos 并添加记录。DRM-X 6.0 Universal Player 区域集中显示 Content ID、内容类型、保护策略和启用状态，并提供字段说明。为已登录用户创建 AccessGrant，设置开始时间和可选到期时间。仅启用视频不会授予观看权限；撤销授权或禁用视频后，新的播放请求会被拒绝。



登录后访问 /protected/VIDEO_ID/。页面会向 /protected/VIDEO_ID/session/ 请求会话。如果已有课程或订阅模型，可将 can_play 替换为您的服务器端规则，但应保留有效用户、已启用视频和具体视频权限的检查。





## CSRF 与部署[#](#csrf)



已发布的 Web Component 不支持自定义会话请求头。此应用将经过掩码处理的 Django CSRF token 放入同源接口 URL，并使用 Django 标准的 Cookie 和来源检查明确验证。请勿移除此验证，也不要为播放器页面启用跨用户共享缓存。



请勿在访问日志中记录查询字符串；使用 HTTPS 和安全会话 Cookie，并保留 no-referrer 设置。已在 Django 6.0.8 上通过六项测试，覆盖授权生命周期、CSRF、来源、内容绑定，以及服务器控制的身份和策略。真实 DRM 播放仍需要使用您的已发布内容进行验证。

<!-- Canonical: https://docs.drm-x.com/zh-Hans/integrations/django -->
<!-- Language: zh-Hans -->
