跳到主要内容
返回列表
测试 的封面
置顶

测试

asahi2000 的头像 asahi2000
2026-06-25 09:52 23 次阅读 更新于 2026-06-25 09:52

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.jsonConnectionStrings:AuthMeConnection

"AuthMeConnection": "Host=你的数据库IP;Port=5432;Database=authme;Username=用户名;Password=密码;"

服务器状态查询(可选)

appsettings.jsonServerStatus

"ServerStatus": {
  "Minecraft": { "Host": "你的MC服务器IP", "Port": 25565 },
  "TeamSpeak3": { "Host": "你的TS3域名", "QueryPort": 10011 }
}

邮箱服务(可选,用于找回密码)

  • 开发环境:编辑 appsettings.Development.jsonEmail
  • 生产环境:编辑 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 插件的对接方式:

  1. 共享数据库:官网直接读写 AuthMe 的 authme 表(PostgreSQL)
  2. 兼容密码哈希:注册/改密时使用 $SHA$salt$hash 格式,与 AuthMe SHA256 算法一致
  3. Session 登录:不使用 ASP.NET Core Identity,通过 HttpContext.Session 存储登录态(IsLoggedInUsernameDisplayName

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 隐私政策

部署

  1. 发布项目:

    dotnet publish -c Release -o ./publish
    
  2. publish/ 目录部署到服务器(IIS、Nginx 反向代理、Docker 等均可)

  3. 设置服务器上的 appsettings.Production.json(数据库连接、SMTP 凭据等)

    此文件已在 .gitignore 中排除,避免生产凭据误提交

  4. 设置环境变量 ASPNETCORE_ENVIRONMENT=Production(默认即为 Production)


许可证

© 2026 SpiceSoft Studio. All rights reserved.