跳到主要内容

AuthMe 联动

EMC 高级登录可以与 AuthMe 数据库联动,实现旧账号数据无缝继承。

工作原理

插件不依赖 AuthMe 插件运行,而是直接读取 AuthMe 的 SQLite 数据库文件(plugins/AuthMe/authme.db)。

启动时,插件会自动禁用 AuthMe 插件,由本插件完全接管登录流程。

启用/禁用

config.yml 中配置:

authme:
enabled: true # 设为 false 可禁用 AuthMe 联动

数据继承流程

老玩家(AuthMe 中已注册)

  1. 玩家完成 QQ 授权
  2. 插件检测到该游戏名在 AuthMe 数据库中已注册
  3. 提示玩家输入旧 AuthMe 密码
  4. 密码验证通过 → 标记为已继承 → 完成登录
  5. 后续登录不再需要输入旧密码

新玩家(AuthMe 中未注册)

  1. 玩家完成 QQ 授权
  2. 插件未在 AuthMe 数据库中找到该游戏名
  3. 提示玩家设置一个 4-30 位的离线密码
  4. 密码以 AuthMe SHA256 格式写入数据库 → 完成登录

密码格式

插件使用 AuthMe 的 SHA256 哈希格式:

$SHA$<salt>$<sha256(sha256(password) + salt)>
  • salt — 16 字节随机生成的十六进制字符串
  • 双层 SHA256 哈希确保密码安全

继承记录

已完成数据继承的玩家记录在 plugins/EMC-AdvancedLogin/inherited.yml 中:

inherited:
- "playername1"
- "playername2"

已在列表中的玩家后续登录会跳过密码验证步骤。

数据库自动创建

如果 plugins/AuthMe/authme.db 不存在,插件会自动创建该文件并初始化表结构,确保新服务器也能正常使用离线密码功能。

注意事项

  • 插件启动时会自动禁用 AuthMe,请勿同时使用两个登录系统
  • 仅支持 AuthMe 的 SHA256 密码格式,其他格式(如 bcrypt)暂不支持
  • 数据库操作在异步线程中执行,不会阻塞主线程