常见问题

关于 ZazreAuth 授权系统的常见疑问与解答

ZazreAuth 是什么?适合什么场景?
ZazreAuth 是一个开源、自托管的商业授权管理系统。适合以下场景:
  • 你是软件开发者,需要将产品授权给客户使用
  • 你想防止源码被盗版传播或二次分发
  • 你需要管理大量客户的授权、到期时间、域名绑定
  • 你希望集成在线支付,实现付款自动开通授权
完全开源(Apache 2.0),代码可审计,数据完全由你掌控。
部署 ZazreAuth 需要什么环境?
最低环境要求:
  • PHP >= 8.0(推荐 8.1+)
  • MySQL >= 5.7 或 MariaDB >= 10.3
  • 支持 opensslcurlmbstring 扩展
  • Nginx 或 Apache 服务器,支持 URL 重写(伪静态)
  • SSL 证书(HTTPS 强烈建议,防止授权码在传输中被截获)
支持 Docker 一键部署,也支持传统 LAMP/LEMP 环境手动安装。
ZazreAuth 是免费的吗?
是的,ZazreAuth 采用 Apache 2.0 开源协议,你可以免费用于个人和商业项目,无需支付任何授权费用。你可以:
  • 自由部署在自己的服务器上,服务无限数量的客户
  • 二次开发和修改源码
  • 将系统集成到你的产品中进行分发
只需保留原始版权声明即可。
如何接入 SDK 进行授权验证?
通用步骤(以 PHP 为例):
  1. ZazreAuth.php 放到你的项目目录
  2. 在入口文件中 require_once 'ZazreAuth.php';
  3. 配置授权码:\Zazre\ZazreAuth::config(['license_key'=>'你的授权码']);
  4. 调用 \Zazre\ZazreAuth::authorize();,未授权会自动终止并显示友好提示
支持 6 种语言:PHP、Python、Java、Node.js、Go、Bash。详细用法请查阅 开发文档
建议将 license.key 文件单独存放,不写入代码仓库。
断网时授权还能用吗?
可以。SDK 内置了本地缓存机制,默认缓存有效期为 24 小时。当网络不可用时,SDK 会优先读取本地缓存的授权状态。

如果缓存也过期了,且无法连接授权服务器,SDK 默认会判定为未授权。你可以在配置中调整缓存时间:
  • PHP: 'cache_ttl' => 172800 (48小时)
  • Node.js: cache_ttl: 172800
注意:过长的缓存时间会降低安全性,建议不超过 72 小时。
如何增强授权安全性,防止被破解?
推荐的安全加固措施:
  • 域名绑定:在后台为每个授权码严格绑定运行域名,防止授权码被滥用
  • HTTPS 传输:生产环境强制使用 HTTPS,防止授权码在传输过程中被截获
  • 签名验证:开启 HMAC-SHA256 请求签名,防止请求被篡改
  • 时间戳校验:拒绝超过 5 分钟的时间差请求,防止重放攻击
  • 代码加密:使用 ZazreAuth 内置的加密工具对核心代码进行加密保护
  • 定期更新:通过在线更新系统推送新版 SDK 和授权逻辑
安全是系统工程,不要依赖单一手段。建议同时启用域名绑定 + 签名 + 加密。
一个授权码可以绑定多个域名吗?
默认情况下,一个授权码只能绑定一个域名。但在后台管理面板中,你可以:
  • 将授权码与主域名绑定(如 example.com
  • 添加 www.example.com 作为别名,SDK 会自动尝试 www 变体
  • 为测试环境单独创建授权码(如 dev.example.com
如果需要多域名授权(如子域名通配符),可以创建多个授权码,或使用自定义产品字段进行分组管理。
授权到期后会怎样?可以续期吗?
授权到期后:
  • SDK 验证会返回 授权已过期 错误
  • 已部署的应用程序会显示未授权提示并停止运行
  • 客户中心会显示到期提醒
续期方式:
  • 管理员在后台直接修改授权到期时间
  • 客户在客户中心通过在线支付续期(如果集成了支付功能)
  • 通过卡密兑换功能自动延长授权时间
续期后,SDK 的本地缓存会在下次验证时自动刷新。
如何查询授权状态?
有三种方式查询授权状态:
  • 公开查询页:访问 授权查询,输入授权码即可查看状态
  • 客户中心:登录后在我的授权中查看详细信息
  • API 接口:直接调用 POST /api/check.php 进行验证
支持哪些支付方式?
系统默认集成了支付宝和微信支付(需要配置对应的支付密钥)。也支持:
  • 支付宝当面付(个人/企业均可)
  • 微信支付 Native / JSAPI
  • 卡密兑换(手动生成卡密,客户自助兑换)
支付成功后,系统会自动创建或续期授权,无需人工干预。
支付回调失败怎么办?
如果支付回调(异步通知)失败,通常是因为:
  • 服务器未正确配置 HTTPS 或 SSL 证书过期
  • 支付平台的 IP 白名单未配置
  • 回调 URL 被防火墙或 WAF 拦截
解决方法:
  • 检查服务器日志,确认是否收到回调请求
  • 在支付平台后台检查回调地址和密钥配置
  • 使用支付平台的「手动补单」功能触发订单状态同步
建议同时开启「支付订单查询」定时任务,每 5 分钟主动查询未支付订单状态。
如何升级到新版本?
ZazreAuth 支持在线升级:
  • 在后台「系统设置」中点击「检查更新」,一键下载并自动备份旧版本
  • 手动下载新版本,覆盖文件后运行 migrate.php 执行数据库迁移
  • 使用 Git 部署的用户可以直接 git pull 后执行迁移
升级前请务必备份数据库和配置文件,防止数据丢失。