package admin import ( "cc-officialweb/models" "cc-officialweb/service" "encoding/json" "github.com/beego/beego/v2/adapter/validation" beego "github.com/beego/beego/v2/server/web" "github.com/go-playground/validator/v10" ) type LoginController struct { beego.Controller } type JSON struct { Code int Msg string Data any } type JSONS struct { Total int Data any } func (l *LoginController) Get() { l.TplName = "admin/login.html" } func (l *LoginController) Post() { var user models.User // 获取POST参数 username := l.GetString("username") password := l.GetString("password") // 进行验证和登录检查 valid := validation.Validation{} valid.Required(username, "username").Message("用户名不能为空") valid.Required(password, "password").Message("密码不能为空") user.Username = username user.Password = password if valid.HasErrors() { for _, err := range valid.Errors { l.Data["error"] = err.Message break } } else { token := service.Login(user) if token != "" { l.Ctx.SetCookie("token", token, 3600*24*7, "/", "", false, true) l.Redirect("/admin/index", 302) } else { l.Data["error"] = "用户名或密码错误" } } l.TplName = "admin/login.html" } // Login 登录接口 func (l *LoginController) Login() { var user models.User // 获取POST参数 err := json.Unmarshal(l.Ctx.Input.RequestBody, &user) if err != nil { l.Data["json"] = &JSON{Code: 103, Msg: "json格式错误"} l.ServeJSON() return } // 进行验证和登录检查 validate := validator.New() unva := validate.Var(user.Username, "required") pwdva := validate.Var(user.Password, "required") if unva != nil || pwdva != nil { l.Data["json"] = &JSON{Code: 103, Msg: "用户名密码不能为空"} l.ServeJSON() return } else { token := service.Login(user) if token != "" { l.Data["json"] = &JSON{Code: 200, Msg: "登录成功", Data: token} l.ServeJSON() } else { l.Data["json"] = &JSON{Code: 103, Msg: "用户名密码错误"} l.ServeJSON() return } } }