# Laravel 与 Node.js 集成

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

播放授权的流程

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

- 01**观看用户**

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

- 02**您的后端**

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

- 03**DRM-X**

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

- 04**播放器**

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

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

## 安装 Laravel 包[#](#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 上通过四项测试；其他依赖版本仍需分别进行验收。



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





## 接入现有 Node.js 后端[#](#node)



在已由现有身份验证和 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[#](#web)



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



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

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