服务器登陆模组

服务器登陆模组

A purely server-side Fabric login module, where the administrator has full control over accounts. Forced login, automatic binding, AFK timeout, and position restoration provide a complete securi 纯服务端 Fabric 登录模组,管理员完全掌控账号。强制登录、自动绑定、挂机超时,为服务器提供完整的安全验证体系

管理

ServerAuth 登录模块 —— 功能概述

这是一个纯服务端的 Fabric 模组 (1.20.x),为你的服务器提供了一套完整的安全验证系统,包括强制登录、自动绑定、会话管理和防挂机措施。

核心设计理念

· 管理员完全掌控账户:只有 OP(权限等级 4)可以创建/删除账户;普通玩家无法自行注册。

· 强制登录验证:未通过认证的玩家无法移动或交互(被传送到虚空空间,黑屏悬浮)。

· 设备绑定自动登录:玩家可以选择将账户绑定到其设备的 UUID,以便后续访问服务器时自动登录。

· 登录位置恢复:成功登录后,玩家会被传送回其初始出生点。

· 双重超时机制:

· 空闲超时:登录后若在设定的分钟内无活动,将被强制登出,需要重新登录。

· 自动登录有效期:绑定账户后,如果在设定的天数内没有登录,自动登录将失效。后续登录需要手动输入密码。

· 新增 6 种语言,只有管理员可以使用 /change chinese|english|spanish|french|russian|arabic 来切换中文、英文、西班牙语、法语、俄语、阿拉伯语。模组默认语言为中文。

玩家体验(面向玩家的功能)

  1. 首次进入服务器 · 进入游戏后,玩家会发现自己处于虚空(黑屏),悬浮在空中,无法移动。 · 聊天栏中会出现提示,指导玩家使用 /login 命令登录。
  2. 登录命令 /login <用户名> <密码> · 输入管理员提供的用户名和密码进行登录。 · 成功登录后: · 玩家将立即被传送回其进入服务器时的位置(出生点或进入时的坐标)。 · 游戏模式将切换为生存模式,允许正常游玩。
  3. 绑定设备(自动登录) /login <用户名> <密码> -b 或 /login <用户名> <密码> --bind · 在登录时添加 -b 参数,可以永久地将账户绑定到玩家的 UUID(已验证账户的唯一标识符)。 · 玩家在后续进入服务器时将自动登录,无需任何操作。
  4. 手动登出 /logout · 玩家可以手动登出,返回到虚空状态。 解绑设备 /unbind · 使用此命令可以解除当前账户与设备的绑定(例如,切换玩家时)。 · 解绑后,下次进入需要手动登录。 管理员功能(OP 专属)

所有管理员命令都以 /auth 开头。

命令 说明 示例
/auth create <用户名> <密码> 创建一个普通玩家账户
/auth create <用户名> <密码> -admin 创建一个管理员账户(拥有 OP 权限)
/auth delete <用户名> 删除指定的账户
/auth unbind <用户名> 强制解绑指定的账户(适用于玩家切换设备时)
/auth list 列出所有账户及其绑定状态
/auth kickall 踢出所有未登录的玩家(清空服务器)

⚠️ 注意:在使用 /auth 命令之前,管理员必须通过控制台或其他方式给自己 OP 权限(op [玩家名])。 可配置选项 (config/serverauth/config.json) 配置文件在服务器启动时自动生成。您可以随时修改并保存,无需重启(模组会定期重新读取设置)。

{
  "requireLogin": true,                // 需要登录(建议保持为 true)
  "kickOnFailedLogin": true,            // 登录失败时是否踢出玩家
  "maxLoginAttempts": 3,                // 最大登录尝试次数(计数功能尚未实现)
  "enableSession": true,                // 启用会话功能
  "sessionTimeout": 30,                  // 保留字段,未使用
  "sessionTimeoutMinutes": 30,           // 空闲超时(分钟)。超过此时间无活动将强制登出(0 = 永不超时)
  "autoLoginExpiryDays": 30              // 自动登录有效期(天)。绑定超过此天数的账户,登录时需要手动输入密码(0 = 永久有效)
}

· 要防止空闲超时:"sessionTimeoutMinutes": 0

· 要启用永久账户绑定:"autoLoginExpiryDays": 0

所有账户信息(包括密码哈希、绑定的 UUID、创建时间)都存储在: [服务器根目录]/config/serverauth/accounts.json

· 密码存储:使用 SHA-256 哈希,无法逆向破解。 · 绑定关系:基于 Minecraft UUID(正版账户为固定值;离线模式下根据玩家名生成)。