Laravel 与 Node.js 集成
通过 ContentAuthorizer 将 Laravel 连接到现有视频目录和购买系统。不需要 DRM-X 内容表或访问权限表。
包含预览版 SDK、应用示例和源码。请保留解压后的目录结构。
需要自定义的三个位置#
- 配置
config/drmx.php and server environment设置凭据、稳定的实例 ID 和默认策略。
- 授权
app/Services/DrmxAccess.php使用当前权限实现 ContentAuthorizer。
- 注册
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 许可证具有各自的有效期。新请求会检查权限变更,但不会清除已经签发的许可证。
DRM-X 6.0