DRM-X 6.0 logo bồ câu và nhánh ô liuDRM-X 6.0Tài liệu
◎ Tiếng Việt

Tích hợp Laravel và Node.js

Kết nối Laravel với danh mục và hệ thống mua hàng hiện có qua ContentAuthorizer. Không cần bảng nội dung hoặc bảng cấp quyền truy cập DRM-X.

Xem MarkdownVí dụ chạy trực tiếpCập nhật 2026-09-25
Tải bộ tích hợp nền tảng này

SDK bản xem trước, ví dụ ứng dụng và mã nguồn. Giữ cấu trúc thư mục sau giải nén.

Mọi nền tảng và bộ đầy đủ · Hiểu quy trình tích hợp

Ba vị trí bạn cần tùy chỉnh#

  1. Cấu hìnhconfig/drmx.php and server environment

    Đặt thông tin xác thực, ID phiên bản ứng dụng ổn định và chính sách mặc định.

  2. Cấp quyềnapp/Services/DrmxAccess.php

    Triển khai ContentAuthorizer theo quyền hiện tại.

  3. Đăng kýapp/Providers/AppServiceProvider.php

    Đăng ký dịch vụ kiểm tra quyền của bạn; mặc định là từ chối truy cập.

1. Cài các gói Composer đi kèm#

Dùng ứng dụng Laravel hiện có (đã thử Laravel 12), PHP 8.2+ với cURL và ZIP. Thêm kho gói và phụ thuộc này vào composer.json, giữ các mục hiện có:

{
  "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

Bộ tích hợp chứa cả ZIP thư viện PHP lõi và Laravel. Cấu hình DRMX_SITE_ID, DRMX_SITE_KEY và DRMX_ACCESS_KEY. Làm mới bộ nhớ đệm cấu hình Laravel sau khi đổi thiết lập triển khai. Gói này không nạp migration nào.

2. Triển khai kiểm tra quyền#

Tạo dịch vụ bên dưới trong ứng dụng. Thay customerFindAuthorizedVideo bằng truy vấn của bạn; truy vấn phải kiểm tra quyền hiện tại của người dùng này.

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];
    }
}

Đăng ký bằng AppServiceProvider::register():

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

Trả về null nếu không có quyền hoặc bị từ chối. Lần thử cục bộ đầu tiên có thể chỉ cho phép một tài khoản và một video rồi trả về Content ID cố định. Thay quy tắc này bằng truy vấn nghiệp vụ trước triển khai.

3. Dùng đăng nhập Laravel thông thường#

Đăng nhập và mở /drmx/videos/lesson-123. Bộ tích hợp cung cấp tuyến có xác thực và trang trình phát, kiểm tra lại dịch vụ phân quyền khi có yêu cầu phiên, đồng thời giữ Laravel CSRF. Không ghi chuỗi truy vấn endpoint vào log truy cập. Bản cũ dùng cơ sở dữ liệu phải giữ lịch sử migration; xem legacy/README.md.

Dùng Node.js thay thế?#

Làm theo hướng dẫn Express SDK. Điểm mở rộng tương ứng là authorize(userId, videoId).

React, Next.js và Vue#

Tải thành phần frontend

Trước hết chọn backend có xác thực. Sao chép DrmxPlayer.tsx cho React/Next.js hoặc DrmxPlayer.vue cho Vue, kèm runtime.mjs và runtime.d.mts. Truyền contentId, contentType đã được cho phép và sessionEndpoint cùng origin. Giữ tham số chọn video và token CSRF trong URL đó.

Thành phần nạp phiên bản cố định của script trình phát. Máy chủ vẫn kiểm tra nội dung và người dùng đã chọn; thuộc tính do trình duyệt gửi không cấp quyền truy cập.

Kiểm tra trước khi đưa vào vận hành#

  • Đăng nhập bằng người dùng được phép và phát video đã xuất bản trên trình duyệt được hỗ trợ.
  • Thử người chưa đăng nhập và chưa thanh toán, rồi thu hồi quyền hoặc cho quyền hết hạn. Yêu cầu phiên mới phải bị từ chối.
  • Thử đổi Content ID trong trình duyệt hoặc ID video của trang. Máy chủ phải kiểm tra lựa chọn mới.
  • Đặt đúng origin HTTPS công khai, giữ bảo vệ phiên/CSRF của framework và tắt mã danh tính demo.

Phiên và giấy phép DRM hiện có có thời hạn riêng. Yêu cầu mới kiểm tra thay đổi quyền nhưng không xóa giấy phép đã cấp.