sequenceDiagram participant U as 用户浏览器 participant G as Gin Router participant H as HandlerAdmin participant AM as AdminModel participant SS as SessionStore U->>G: GET /admin/login G->>H: LoginGet(c) H-->>U: 登录页 HTML U->>G: POST /admin/login {username, password} G->>H: LoginPost(c) H->>AM: VerifyPassword(username, password) AM->>AM: bcrypt.CompareHashAndPassword() AM-->>H: true/false alt 验证成功 H->>SS: Create(adminID, username) SS-->>H: sessionID H->>H: c.SetCookie("session_id", sessionID, 86400, "/", "", false, true) H-->>U: 302 Redirect → /admin else 验证失败 H-->>U: 200 + 登录页(错误提示) end