Laravel 与 Node.js 集成
为已有身份验证的应用接入 DRM-X,确保服务器凭据不被公开,且不依赖浏览器提供的权限判断。
播放授权的流程
您的后端决定谁可以观看。DRM-X 提供播放授权,播放器使用该授权请求 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 或前端路由守卫不能替代后端权限检查。
DRM-X 6.0