<!-- Source: https://interview-questions.io.nexus/hertz-login -->

# 题目：基于 Go 的 Hertz 框架实现一个简单登录系统

### 一、项目背景

请使用 **Go 语言 + Hertz 框架** 开发一个最小可用的用户登录系统，实现基本的认证与会话管理功能。

---

### 二、功能要求

1. **基础环境**

   * 使用 Hertz 搭建 HTTP 服务（端口不限）。
   * 使用 Go Modules 管理依赖，项目能正常启动并接收请求。

2. **用户数据**

   * 使用任意方式存储用户数据（内存、数据库或文件）。
   * 用户至少包含 `username`、`password` 字段。

3. **登录功能**

   * 提供登录页面（GET /login）和登录提交接口（POST /login）。
   * 登录成功跳转到首页（例如 /home）并显示当前用户名。
   * 登录失败返回登录页并显示错误信息。

4. **会话管理**

   * 登录成功后保存登录状态（可基于 session、cookie 或自定义方式）。
   * 受保护页面需验证用户是否已登录。
   * 提供退出登录（/logout）并清除会话信息。

5. **异常处理**

   * 对空参数、非法方法、未登录访问受保护资源等情况进行合理处理。

---

### 三、非功能性要求

1. **代码结构清晰，必要注释完整。**
2. **不泄露敏感信息，不在响应中返回密码。**

---

### 四、加分项（任选其一即可）

* 密码加密存储
* 注册功能
* 登录失败次数限制与账户锁定
* 记住我功能

---

### 五、提交内容

* 完整项目源码（含 go.mod）
* README，说明项目结构、启动方式及已实现功能
