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

Java、Spring Boot 与 Vue

安装 Spring Boot starter,将 ContentEntitlement 接入现有用户和内容数据访问层。只有当前端使用 Vue 时才需要添加 Vue。

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

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

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

需要自定义的三个位置#

  1. 配置application.properties / server environment

    设置 DRMX_SITE_ID、DRMX_SITE_KEY、DRMX_ACCESS_KEY 和实例 ID。

  2. 授权

    DrmxAccess.java 和您的数据仓库

    实现 ContentEntitlement,检查当前用户对所选视频的访问权限。

  3. 路由

    PlayerController.java / 您的控制器

    页面元数据和会话请求应使用同一个带权限检查的查询。

1. 安装随附的 JAR#

使用 Java 21 和 Maven。在解压后的集成包根目录运行:

mvn install:install-file -Dfile=packages/maven/drmx-spring-boot-starter-1.3.0-preview.13.jar -DpomFile=packages/maven/drmx-spring-boot-starter-1.3.0-preview.13.pom

示例使用 Spring Boot 3.5。在现有应用中,添加 examples/sdk/java/pom.xml 所示的 starter 依赖。Maven 可能会下载常规框架依赖。

2. 在本地播放一个视频#

在 examples/sdk/java/src/main/java/com/haihaisoft/drmx/LocalDemo.java 中替换 your-published-content-id。配置三个凭据,并将 DRMX_DEMO_PASSWORD 设为至少 12 个字符的本地测试密码。

cd examples/sdk/java
mvn spring-boot:run -Dspring-boot.run.profiles=local-demo

打开 http://127.0.0.1:8107/,以 drmx-learner 登录;drmx-denied 是用于测试拒绝访问的账号。临时内存数据库会在重启时重置。它属于演示应用代码,并非生产环境必须采用的数据结构。

3. 连接实际数据库#

在 DrmxAccess.java 中实现 bean。由您的数据访问层执行查询和权限检查;下方是替换方式的示例:

@Bean
ContentEntitlement contentEntitlement(CustomerCatalog catalog) {
    return (userId, videoId) -> catalog.findAuthorizedVideo(userId, videoId)
        .map(video -> new AuthorizedVideo(
            video.drmxContentId(), video.contentType(), video.policy()));
}

拒绝访问时返回 Optional.empty()。将 PlayerController 连接到同一个数据访问层,并保留对请求内容及类型的准确比较。保留正常的 Spring Security 和 CSRF 保护。示例控制器使用数字网站 ID;若应用使用 UUID,请同时调整参数和数据访问层。

4. 连接前端#

示例 HTML 页面展示共享 Web Component。若使用 Vue,请使用 integrations/web-components/DrmxPlayer.vue 及其相邻的运行时文件。从控制器传入允许访问的内容元数据和同源会话 URL。生产环境中禁用 local-demo 配置。

上线前检查#

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

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