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-configPHP 코어와 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