Skip to content

授权与遥测 ​

本组件默认开启使用情况上报,用于识别谁在使用、何时开始使用,以及发现未授权商用。 上报内容不含任何用户个人信息与业务数据,可在生产环境一键关闭(见「三、如何关闭」)。

一、上报什么、不上报什么 ​

上报字段(每台浏览器每月最多一次):

字段说明
code授权码;未配置时为空串
customer客户编号(从授权码解出,未授权时为空)
version组件版本号
origin / host组件部署的域名
firstUseAt该浏览器首次使用本组件的时间
uses用到的能力:designer / preview / print / printBatch
ts本次上报时间(服务端以自己的时间为准)

不上报:用户个人信息、业务单据数据、客户业务数据。服务端不落 IP。

二、什么时候上报 ​

  • 只在生产环境:localhost、127.0.0.1、*.local、*.test、file:// 一律不上报
  • 每台浏览器每月最多一次(跨月才会再次上报)
  • 未配置授权码也会上报 —— 这是发现「未授权商用」的唯一途径
  • 延迟到浏览器空闲时发送(requestIdleCallback),不影响首屏性能
  • 发送失败(离线 / 被广告拦截器或 CSP 拦下 / 跨域失败)静默忽略,绝不重试轰炸、绝不影响打印功能

三、如何关闭 ​

ts
import { setupLicense } from 'm7_print_designer'

// 方式一:彻底关闭遥测
setupLicense({ report: false })

// 方式二:非生产环境(预发、测试)显式声明,等价于关闭
setupLicense({ env: 'development' })

关闭遥测不影响授权码校验与打印功能。

四、授权码 ​

生产环境初始化时调用一次:

ts
import { setupLicense } from 'm7_print_designer'

setupLicense({ code: 'M7PD1.xxxxxxxx.yyyyyyyy' })
  • 校验完全离线(内置公钥本地验签),不发任何网络请求 —— 断网、内网、无法连接公网时照常工作
  • 无码 / 码无效 / 码已过期 → 打印与预览输出铺倾斜重复水印,功能不做任何限制(软授权)
  • 开发/测试环境不加水印:localhost、127.0.0.1、*.local、*.test 视为非生产,便于集成自测与演示;生产域名(含预发)才会出现水印
  • 水印文案可自定义:setupLicense({ watermark: '贵公司内部试用' })

五、离线与内网环境 ​

场景表现
断网 / 连不上组件服务器功能完全正常;授权本地校验照常;遥测静默失败
内网非 HTTPS(http://192.168.x.x)浏览器不提供 WebCrypto,无法验签 → 放行、不加水印(避免误伤已付费客户),控制台提示一次
开发/测试环境(localhost、*.local)不加打印水印、不上报遥测,便于集成自测
隐私模式 / 禁用 localStorage一切照常,仅遥测无法去重,不报错
客户网站 CSP 限制外连遥测被拦 → 静默忽略,功能不受影响

设计原则:任何网络问题都不影响打印功能。授权判定只依赖本地验签,遥测只是「尽力而为」。

六、安全边界(请知悉) ​

本机制是「识别 + 提醒」,不是防篡改:

  • 组件源码开放,前端校验可以被修改绕过
  • 遥测可能被广告拦截器或 CSP 拦掉,统计存在漏报

真正的约束来自授权协议与法律,不来自这里的技术校验。本机制的作用是让使用情况可见、让未授权使用有明确提示。

七、常见问题 ​

Q:我的生产环境在内网、连不上公网,功能会受限吗? 不会。授权校验是本地验签,遥测失败会被静默忽略,打印功能完全正常。

Q:客户不同意上报,怎么处理? 按客户要求调用 setupLicense({ report: false })(或签署协议约定),授权码与水印功能不受影响。

Q:未授权会限制功能吗? 不会。只在打印与预览输出附加水印,所有功能照常可用。

Q:换域名 / 换浏览器会重复上报吗? 上报按「浏览器 + 月份」去重。同一客户多个部署域名会在后台合并到同一客户编号下展示。