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

Laravel 与 Node.js 集成

通过 ContentAuthorizer 将 Laravel 连接到现有视频目录和购买系统。不需要 DRM-X 内容表或访问权限表。

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

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

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

需要自定义的三个位置#

  1. 配置config/drmx.php and server environment

    设置凭据、稳定的实例 ID 和默认策略。

  2. 授权app/Services/DrmxAccess.php

    使用当前权限实现 ContentAuthorizer。

  3. 注册app/Providers/AppServiceProvider.php

    绑定您的授权服务;默认行为是拒绝访问。

1. 安装随附的 Composer 包#

使用现有 Laravel 应用(已测试 Laravel 12),以及带 cURL 和 ZIP 支持的 PHP 8.2+。将此构件仓库和依赖添加到 composer.json,保留现有条目:

{
  "repositories": [{"type": "artifact", "url": "/absolute/path/to/kit/packages/composer"}],
  "require": {"haihaisoft/drmx-laravel": "1.3.0-RC13"},
  "minimum-stability": "RC",
  "prefer-stable": true
}
composer update haihaisoft/drmx-laravel --with-dependencies
php artisan vendor:publish --tag=drmx-config

平台集成包同时包含 PHP 核心库和 Laravel ZIP。配置 DRMX_SITE_ID、DRMX_SITE_KEY 和 DRMX_ACCESS_KEY。修改部署设置后,请刷新 Laravel 配置缓存。此包不加载任何数据库迁移。

2. 实现权限检查#

在应用中创建下方服务。用您自己的查询替换 customerFindAuthorizedVideo;查询必须检查该用户的当前权限。

namespace App\Services;
use Haihaisoft\Drmx\Contracts\ContentAuthorizer;
use Illuminate\Contracts\Auth\Authenticatable;

final class DrmxAccess implements ContentAuthorizer {
    public function authorize(Authenticatable $user, string $videoId): ?array {
        $video = customerFindAuthorizedVideo($user->getAuthIdentifier(), $videoId);
        if ($video === null) return null;
        return ['content_id' => $video->drmx_content_id,
                'content_type' => 'vod', 'title' => $video->title];
    }
}

在 AppServiceProvider::register() 中注册:

$this->app->bind(
    \Haihaisoft\Drmx\Contracts\ContentAuthorizer::class,
    \App\Services\DrmxAccess::class
);

权限不存在或访问被拒绝时返回 null。首次本地测试可仅允许一个测试账号访问一个视频,再返回固定的 Content ID。部署前请用实际业务查询替换该规则。

3. 使用正常的 Laravel 登录#

登录并打开 /drmx/videos/lesson-123。适配器提供带身份验证的路由和播放器页面,在会话请求时重新执行授权检查,并保留 Laravel CSRF 保护。请勿将端点的查询字符串写入访问日志。旧版使用数据库的安装必须保留历史迁移记录;详见 legacy/README.md。

改用 Node.js?#

请参阅 Express SDK 教程。对应的扩展点是 authorize(userId, videoId)。

React、Next.js 与 Vue#

下载前端组件

先选择一个带身份验证的后端。为 React/Next.js 复制 DrmxPlayer.tsx,或为 Vue 复制 DrmxPlayer.vue,同时复制 runtime.mjs 和 runtime.d.mts。传入经过授权的 contentId、contentType,以及同源的 sessionEndpoint。在该 URL 中保留视频选择参数和 CSRF 令牌。

组件会加载固定版本的播放器脚本。服务器仍会验证选定内容和用户;浏览器传入的组件属性不能授予访问权限。

上线前检查#

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

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