auth.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package handlers
  2. import (
  3. "license-admin/middleware"
  4. "net/http"
  5. "github.com/gin-gonic/gin"
  6. )
  7. // LoginRequest 登录请求结构
  8. type LoginRequest struct {
  9. Token string `json:"token" binding:"required"` // 认证token
  10. }
  11. // LoginResponse 登录响应结构
  12. type LoginResponse struct {
  13. Code int `json:"code"` // 状态码:0 表示成功,非0 表示失败
  14. Msg string `json:"msg"` // 响应消息
  15. Data struct {
  16. Token string `json:"token"` // 返回的token(用于前端存储)
  17. } `json:"data,omitempty"`
  18. }
  19. // Login 登录接口
  20. // POST /api/login
  21. func Login() gin.HandlerFunc {
  22. return func(c *gin.Context) {
  23. var req LoginRequest
  24. if err := c.ShouldBindJSON(&req); err != nil {
  25. c.JSON(http.StatusBadRequest, LoginResponse{
  26. Code: 400,
  27. Msg: "请求参数错误: " + err.Error(),
  28. })
  29. return
  30. }
  31. // 验证token
  32. expectedToken := middleware.GetAuthToken()
  33. if req.Token != expectedToken {
  34. c.JSON(http.StatusUnauthorized, LoginResponse{
  35. Code: 401,
  36. Msg: "Token 无效",
  37. })
  38. return
  39. }
  40. // 登录成功
  41. c.JSON(http.StatusOK, LoginResponse{
  42. Code: 0,
  43. Msg: "登录成功",
  44. Data: struct {
  45. Token string `json:"token"`
  46. }{
  47. Token: req.Token,
  48. },
  49. })
  50. }
  51. }