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

Laravel 与 Node.js 集成

为已有身份验证的应用接入 DRM-X,确保服务器凭据不被公开,且不依赖浏览器提供的权限判断。

查看 Markdown现场实例更新于 2026-09-15

播放授权的流程

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

  1. 观看用户

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

  2. 您的后端

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

  3. DRM-X

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

  4. 播放器

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

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

安装 Laravel 包#

将 laravel 目录作为 Composer path repository 引入,再安装 haihaisoft/drmx-laravel。发布 drmx-config 并执行包中的数据库迁移。通过主机环境配置 DRMX_SITE_ID、DRMX_SITE_KEY、DRMX_ACCESS_KEY 和 DRMX_INSTANCE_ID。

composer require haihaisoft/drmx-laravel:@dev
php artisan vendor:publish --tag=drmx-config
php artisan migrate

通过可信的管理员操作或报名处理代码创建 drmx_videos 和 drmx_access 记录。访问授权记录使用已有的 Laravel 用户 ID,并包含开始时间、到期时间和撤销字段。新视频记录默认禁用。

登录后访问 /drmx/videos/VIDEO_ID。web 和 auth 中间件保持启用,包括 Laravel CSRF 验证。Blade 页面通过会话接口 URL 的 _token 参数传递当前 CSRF token。已在 Laravel 12.69.2 上通过四项测试;其他依赖版本仍需分别进行验收。

下载第三方平台集成源码

接入现有 Node.js 后端#

在已由现有身份验证和 CSRF 中间件保护的路由中,使用 node/core.mjs 的 payloadFor 和 createSession。先通过应用内部 ID 查询视频,确认当前用户有权访问,再将可信映射和用户身份传给 payloadFor。

不要根据请求正文构造用户身份、策略或 enabled 状态。浏览器可以请求 Content ID 和 DRM 系统,但服务器必须将其与已授权的视频核对。请向客户端返回通用错误信息,并设置 Cache-Control: no-store。

独立 Node 集成服务用于 LTI 和托管平台集成。普通 Express、Fastify 或 Next.js 应用应在自身的登录和权限检查之后复用核心函数。该服务不能用作公开的任意会话转发接口。

React、Next.js 与 Vue#

React/Next.js 使用 DrmxPlayer.tsx,Vue 使用 DrmxPlayer.vue,并一同复制 runtime.mjs 和 runtime.d.mts。两个组件均会自动加载指定版本的播放器脚本,显示加载状态和错误提示,并在内容或会话地址变化时移除旧播放器。组件卸载时也会断开播放器。label、loadingText 和 errorText 可通过应用语言包翻译。

组件仅接收 Content ID、内容类型和经过身份验证的同源会话 URL。这些组件本身不会授予访问权限。隐藏按钮、iframe URL 或前端路由守卫不能替代后端权限检查。