跳到正文

Simple Login

作者:seraph_jack

一个提供登录服务的 Forge 模组。

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

SimpleLogin

SimpleLogin 是一个 Forge 模组,旨在保护离线模式下的服务器。

简介

SimpleLogin 类似于 Bukkit 上的一些认证插件,比如 AuthMe:该模组会在玩家登录时校验其密码。

不过,两者也有一些不同之处:密码不是通过命令输入的,而是存储在客户端的一个特定文件中,并在玩家加入时自动发送到服务器,因此玩家不必每次都输入密码。此外,客户端会在首次启动时让你选择一个密码,所以在大多数情况下,玩家甚至不需要做任何事情。

安装

将 simplelogin-xxx.jar 放入服务端和客户端的 mods 目录中。

快速开始

如果你不太在意,就不需要配置任何东西。

玩家的密码不需要手动输入,客户端会生成一个随机 UUID 作为密码,并将其保存在 .minecraft/.sl_password 中,在加入时发送到服务器。

服务器会在玩家首次加入时记住其密码,之后玩家再次加入时,服务器会检查密码是否与第一次的匹配。

常见问题

我的密码安全吗?

当然安全,密码在客户端使用 SHA256 进行哈希,在服务端存储前使用 BCrypt 进行哈希。不过,密码在客户端是以未加密的形式存储的,所以与他人共享客户端时,请注意不要复制 .minecraft/.sl_password 文件。

如果我想更换客户端该怎么办?

你应该备份你的 minecraft/.sl_password 文件,并将其复制到新的客户端中。

存储提供器

在服务端存储用户数据有多种方式,每种方式各有优缺点。Simple Login 提供了一个抽象层,以支持不同的存储实现。每种实现被称为一个“存储提供器”。

每个存储提供器都有其唯一的资源位置(例如 simplelogin:file)来标识自身。

Simple Login 本身提供了两种存储提供器:file 和 sqlite。

文件存储提供器

ResourceLocation:simplelogin:file

文件存储提供器是存储提供器接口最简单的实现,它将所有用户数据以 JSON 格式存储在 world/sl_entries.dat 中。

SQLite 存储提供器

ResourceLocation:simplelogin:sqlite

SQLite 存储提供器可能比文件提供器更高效,但它需要一个 SQLite JDBC 连接器,该连接器大约有 6 MB,我决定不将其打包进 Simple Login。因此,如果你想使用此提供器,你需要自行安装一个 JDBC 连接器。最简单的方法是下载它,然后将 org/sqlite 和 META-INF/services 目录复制到 Simple Login 模组的 jar 中。

自定义存储提供器

如果你熟悉 Java 和 Forge 模组,这不会很难。

你需要实现 top.seraphjack.simplelogin.server.storage.StorageProvider 接口,并在服务器启动前通过调用 top.seraphjack.simplelogin.server.SLRegistries.STORAGE_PROVIDERS::register 注册你自己的提供器。

Simple Login 插件

Simple Login 插件(简称插件)是对 Simple Login 处理玩家加入、登录和离开服务器方式的扩展。

就像存储提供器一样,每个插件都有其唯一的资源位置来标识自身。

Simple Login 的一些关键功能也以内置插件的形式实现,以下是它们的列表。

AutoSave

ResourceLocation:simplelogin:autosave

此插件将每五分钟触发存储提供器保存所有数据。

此插件默认启用。

ProtectCoord

ResourceLocation:simplelogin:protect_coord

此插件会在玩家离开服务器前将其传送回出生点,并在成功登录后将其传送回来,从而防止未经授权的登录尝试可能造成的位置泄露。

此插件默认禁用,因为其行为在游玩大型整合包时会导致一些问题。

ResendRequest

ResourceLocation:simplelogin:resend_request

如果由于某些错误导致客户端之前的登录数据包无法到达服务器,此插件将每五秒请求客户端登录一次。

此插件默认启用。

RestrictGameType

ResourceLocation:simplelogin:restrict_game_type

此插件会在玩家离开或加入服务器时将其游戏模式更改为旁观模式,并在成功登录后将其游戏模式更改为默认游戏模式(存储在存储提供器中)。

此插件默认启用。

RestrictMovement

ResourceLocation:simplelogin:restrict_movement

此插件会阻止玩家在登录前移动。

此插件默认启用。

Timeout

ResourceLocation:simplelogin:timeout

此插件会在一段时间后踢出尚未通过身份验证的玩家(默认为 600 秒,可在 Simple Login 的配置文件中修改,路径为 <server>/<world>/serverconfig/simplelogin-server.toml)。
超时值过去为 60 秒,但由于大型整合包导致登录时的同步耗时超过一分钟的问题,现已增加到 600 秒。

此插件默认启用。

命令

所有命令均支持自动补全。

  • /simplelogin unregister <PlayerName>

    • 注销该玩家
  • /simplelogin save

    • 保存所有玩家条目
  • /simplelogin setDefaultGameType <PlayerName> <GameType>

    • 配置玩家登录后的游戏模式
  • /simplelogin about

    • 显示版本信息
  • /simplelogin plugin available

    • 显示可用插件列表
  • /simplelogin plugin loaded

    • 显示已加载插件列表
  • /simplelogin plugin load <ResourceLocation>

    • 加载指定的插件
  • /simplelogin plugin unload <ResourceLocation>

    • 卸载指定的插件
  • /sl_change_password <NewPassword>

    • 将密码更改为 NewPassword
    • 出于安全考虑,此命令在客户端侧实现

配置

服务器配置

  • secs:整数

    • 等待玩家通过身份验证的时间,如果在此时间后仍未成功通过身份验证,玩家将被断开连接。
    • 默认 600 秒。
    • 过去为 60 秒,但由于大型整合包的超时问题已增加到 10 分钟。
  • plugins:字符串数组

    • 默认加载的插件。
  • commandNames:字符串数组

    • 允许玩家在登录前执行的命令。
    • 请注意,你需要指定完整命令且不带开头的 /,例如 give @p minecraft:apple 16
  • storageProvider:字符串

    • 要使用的存储提供程序。
  • defaultGameType: Integer

    • 新注册用户的默认游戏模式。
    • 0、1、2、3 分别代表生存、创造、冒险和旁观者模式。

常见问题

Simple Login 支持哪些 Minecraft 版本?

Simple Login 支持 Minecraft Java 版 1.10.2–1.20.1,共 18 个版本,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

Simple Login 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

seraph_jack 的其他作品

查看全部 →