SpiceSoft Studio — AuthMeWeb
Minecraft 服务器官网 + 认证系统 | ASP.NET Core MVC + Tailwind/DaisyUI
SpiceSoft 是一个面向 Minecraft 服务器的 Web 认证与管理平台。官网与 AuthMeReloaded 插件共享 PostgreSQL 账号库,玩家在官网注册后即可使用同一账号进入游戏服务器。
功能特性
用户系统
- 注册 — 游戏 ID + 密码 + 邮箱(选填)注册新账号,写入 AuthMe
authme表 - 登录 — 验证密码并维持 Session 会话
- 退出 — 清除登录状态
- 个人资料 — 查看账号信息(注册时间、最后登录、IP、UUID 等)
- 修改邮箱 — 更新绑定的邮箱地址
- 修改密码 — 需要验证旧密码,按 AuthMe
$SHA$格式重新哈希写入
邮箱找回密码
- 忘记密码 — 输入注册邮箱,系统发送含一次性 Token 的重置链接
- 重置密码 — 点击链接设置新密码,Token 15 分钟过期、使用后作废
- 发信方式 — Gmail SMTP + App Password(
smtp.gmail.com:587)
服务器状态查询
- Minecraft — 通过 Server List Ping 协议获取版本、在线人数、MOTD、Ping 延迟
- TeamSpeak 3 — 通过 TCP 连接 ServerQuery 端口检测在线状态与 Banner
公告系统
- 列表查看 — 按置顶倒序展示所有公告
- 发布公告 — 登录用户可发布新公告(标题、内容、置顶选项)
- 编辑/删除 — 登录用户可管理已有公告
UI/UX 设计
- 二次元插画背景 — 动态毛玻璃覆盖层
- DaisyUI + Tailwind CSS — 组件化 UI
- Yozai Font — 自定义手写体品牌文字
- Font Awesome 6 — 图标系统
- AOS.js — 滚动入场动效
- 全站响应式设计
技术栈
| 技术 | 用途 |
|---|---|
| ASP.NET Core 10 (net10.0) | 后端框架 |
| Entity Framework Core + Npgsql | PostgreSQL 数据访问 |
| AuthMeReloaded (Minecraft Plugin) | 游戏服务端认证插件,与官网共享账号库 |
| Razor MVC | 视图引擎 |
| DaisyUI 4 + Tailwind CSS (Play CDN) | UI 组件库 |
| Gmail SMTP | 发送密码重置邮件 |
| PostgreSQL | 数据库(账号、公告、重置令牌) |
项目结构
aspcore/
├── AuthMe/ # [插件侧] AuthMeReloaded 配置文件
│ ├── config.yml # 插件配置(数据库、哈希算法等)
│ ├── messages_zhcn.yml # 中文语言文件
│ └── ...
│
├── AuthMeWeb/ # [网站侧] ASP.NET Core MVC 项目
│ ├── Controllers/ # MVC 控制器
│ │ ├── HomeController.cs # 首页、错误页
│ │ ├── AuthController.cs # 登录/注册/退出/找回密码/重置密码
│ │ ├── ProfileController.cs # 个人主页/改邮箱/改密码
│ │ ├── AnnouncementController.cs # 公告 CRUD
│ │ └── ServerStatusController.cs # Minecraft + TS3 状态查询
│ ├── Models/ # 数据模型与 ViewModel
│ │ ├── AuthMeAccount.cs # authme 表实体映射
│ │ ├── Announcement.cs # 公告实体
│ │ ├── LoginViewModel.cs # 登录表单
│ │ ├── RegisterViewModel.cs # 注册表单
│ │ ├── ProfileViewModels.cs # 个人主页 + 改邮箱/改密码表单
│ │ ├── PasswordResetModels.cs # 重置令牌 + 忘记密码/重置密码表单
│ │ ├── EmailOptions.cs # SMTP 邮件配置选项
│ │ ├── ServerStatusModels.cs # 服务器状态数据模型
│ │ ├── ServerStatusOptions.cs # 状态查询配置选项
│ │ └── ErrorViewModel.cs # 错误页模型
│ ├── Data/
│ │ └── AuthMeDbContext.cs # EF Core DbContext
│ ├── Services/ # 业务服务层
│ │ ├── AuthMePasswordService.cs # $SHA$ 密码哈希与验证(兼容 AuthMe)
│ │ ├── EmailSender.cs # Gmail SMTP 邮件发送
│ │ ├── MinecraftStatusService.cs # Minecraft Server List Ping 查询
│ │ └── TeamSpeak3StatusService.cs # TS3 ServerQuery TCP 探测
│ ├── Views/ # Razor 视图
│ │ ├── Home/ # 首页、隐私
│ │ ├── Auth/ # 登录/注册/忘记密码/重置密码
│ │ ├── Profile/ # 个人主页
│ │ ├── ServerStatus/ # 服务器状态
│ │ ├── Announcement/ # 公告列表/创建/编辑
│ │ └── Shared/ # 布局/错误页/验证脚本
│ ├── wwwroot/ # 静态资源
│ │ ├── css/site.css # 自定义样式(主题色、卡片、按钮、渐变)
│ │ ├── fonts/Yozai-Regular.ttf # 悠哉字体
│ │ ├── js/site.js # 自定义 JS
│ │ ├── servericon.png # 站点图标
│ │ └── lib/ # 第三方库(bootstrap、jquery 等)
│ ├── Program.cs # 应用入口 & 服务注册 & 启动建表
│ ├── appsettings.json # 主配置(数据库、SMTP、状态查询)
│ ├── appsettings.Development.json # 开发环境配置
│ ├── appsettings.Production.json # 生产环境配置(已加入 .gitignore)
│ ├── .gitignore
│ └── AuthMeWeb.csproj # 项目文件(net10.0 + Npgsql)
│
├── config.yml # AuthMe 插件配置副本
└── servericon.png # 服务器图标
快速开始
前置要求
- .NET 10 SDK
- PostgreSQL 数据库(与 AuthMe 插件共用)
- (可选)Minecraft 服务器 + AuthMeReloaded 插件
运行
cd AuthMeWeb
dotnet run
访问 http://localhost:5166
无需
npm install— 前端依赖通过 CDN 加载,无构建步骤。
配置说明
数据库连接(必需)
appsettings.json → ConnectionStrings:AuthMeConnection:
"AuthMeConnection": "Host=你的数据库IP;Port=5432;Database=authme;Username=用户名;Password=密码;"
服务器状态查询(可选)
appsettings.json → ServerStatus:
"ServerStatus": {
"Minecraft": { "Host": "你的MC服务器IP", "Port": 25565 },
"TeamSpeak3": { "Host": "你的TS3域名", "QueryPort": 10011 }
}
邮箱服务(可选,用于找回密码)
- 开发环境:编辑
appsettings.Development.json的Email节 - 生产环境:编辑
appsettings.Production.json(该文件不提交仓库)
"Email": {
"SmtpHost": "smtp.gmail.com",
"SmtpPort": 587,
"Username": "your-email@gmail.com",
"Password": "你的Gmail App Password(16位)",
"From": "your-email@gmail.com",
"BaseUrl": "http://localhost:5166",
"ResetTokenExpiryMinutes": 15
}
如需使用 Gmail SMTP,请开启两步验证 → 生成 App Password
认证方式
官网与 AuthMe 插件的对接方式:
- 共享数据库:官网直接读写 AuthMe 的
authme表(PostgreSQL) - 兼容密码哈希:注册/改密时使用
$SHA$salt$hash格式,与 AuthMeSHA256算法一致 - Session 登录:不使用 ASP.NET Core Identity,通过
HttpContext.Session存储登录态(IsLoggedIn、Username、DisplayName)
API 路由一览
| 路由 | 方法 | 说明 |
|---|---|---|
/ |
GET | 首页 |
/Auth/Login |
GET/POST | 登录 |
/Auth/Register |
GET/POST | 注册 |
/Auth/Logout |
POST | 退出 |
/Auth/ForgotPassword |
GET/POST | 忘记密码(输入邮箱) |
/Auth/ResetPassword |
GET/POST | 重置密码(带 Token) |
/Profile |
GET | 个人主页 |
/Profile/UpdateEmail |
POST | 更新邮箱 |
/Profile/ChangePassword |
POST | 修改密码 |
/ServerStatus |
GET | 服务器状态查询 |
/Announcement |
GET | 公告列表 |
/Announcement/Create |
GET/POST | 发布公告 |
/Announcement/Edit/{id} |
GET/POST | 编辑公告 |
/Announcement/Delete/{id} |
POST | 删除公告 |
/Home/Privacy |
GET | 隐私政策 |
部署
发布项目:
dotnet publish -c Release -o ./publish将
publish/目录部署到服务器(IIS、Nginx 反向代理、Docker 等均可)设置服务器上的
appsettings.Production.json(数据库连接、SMTP 凭据等)此文件已在
.gitignore中排除,避免生产凭据误提交设置环境变量
ASPNETCORE_ENVIRONMENT=Production(默认即为 Production)
许可证
© 2026 SpiceSoft Studio. All rights reserved.