AuthMe 联动
EMC 高级登录可以与 AuthMe 数据库联动,实现旧账号数据无缝继承。
工作原理
插件不依赖 AuthMe 插件运行,而是直接读取 AuthMe 的 SQLite 数据库文件(plugins/AuthMe/authme.db)。
启动时,插件会自动禁用 AuthMe 插件,由本插件完全接管登录流程。
启用/禁用
在 config.yml 中配置:
authme:
enabled: true # 设为 false 可禁用 AuthMe 联动
数据继承流程
老玩家(AuthMe 中已注册)
- 玩家完成 QQ 授权
- 插件检测到该游戏名在 AuthMe 数据库中已注册
- 提示玩家输入旧 AuthMe 密码
- 密码验证通过 → 标记为已继承 → 完成登录
- 后续登录不再需要输入旧密码
新玩家(AuthMe 中未注册)
- 玩家完成 QQ 授权
- 插件未在 AuthMe 数据库中找到该游戏名
- 提示玩家设置一个 4-30 位的离线密码
- 密码以 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)暂不支持
- 数据库操作在异步线程中执行,不会阻塞主线程