// 用户登录表单提交 func (this *UserController) LoginAction() { flash := beego.NewFlash() user := &models.User{} err := this.ParseForm(user) if err != nil { beego.Error("用户登录失败:" + err.Error()) flash.Error("用户登录失败!") flash.Store(&this.Controller) this.Redirect("/login", 302) //登录失败,重定向到登录页 return } user.Password = models.MD5(user.Password) //将密码以MD5加密存储 captchaCode := this.Input().Get("captcha") //判断验证码是否正确 if !captcha.VerifyString(this.GetSession("captchaStr").(string), captchaCode) { flash.Error("验证码不正确!") flash.Store(&this.Controller) this.DelSession("captchaStr") //从session中清空 this.Redirect("/login", 302) //验证码不正确,重定向到登录页 return } else { isAutoLogin := this.Input().Get("isAutoLogin") == "on" //是否自动登录 u := models.Login(user) //成功返回user,失败返回nil if u != nil { maxAge := 0 if isAutoLogin { maxAge = 72 * 24 * 60 } this.Ctx.SetCookie("username", user.Username, maxAge, "/") //设置cookie this.Ctx.SetCookie("password", user.Password, maxAge, "/") //设置cookie u.Lastlogin = time.Now().Local() //设置最后登录时间 u.Loginip = this.Ctx.Input.IP() //获取客户端IP if !models.UserModify(u) { //用户登录成功后更新最后登录时间 beego.Error("更新用户最后登录时间失败" + err.Error()) flash.Error("更新用户最后登录时间失败!") flash.Store(&this.Controller) } this.SetSession("user", u) //将用户信息存放到Session中 flash.Notice("用户" + u.Nickname + "登录成功!") flash.Store(&this.Controller) this.Redirect("/", 302) //登录成功 return } else { flash.Error("用户名或密码不正确!") flash.Store(&this.Controller) this.Redirect("/login", 302) //登录失败,重定向到登录页 return } } }
// 用户注册表单提交 func (this *UserController) RegisterAction() { flash := beego.NewFlash() user := &models.User{} err := this.ParseForm(user) if err != nil { beego.Error("用户注册失败:" + err.Error()) flash.Error("注册用户失败!") flash.Store(&this.Controller) this.Redirect("/register", 302) //注册失败,重定向到注册页 return } user.Password = models.MD5(user.Password) //将密码以MD5加密存储 user.Registed = time.Now().Local() //用户注册时间 user.Lastlogin = time.Now().Local() //用户最后登录时间 user.Registeip = this.Ctx.Input.IP() //用户注册的ip captchaCode := this.Input().Get("captcha") //判断验证码是否正确 if !captcha.VerifyString(this.GetSession("captchaStr").(string), captchaCode) { flash.Error("验证码不正确!") flash.Store(&this.Controller) this.DelSession("captchaStr") //从session中清空 this.Redirect("/register", 302) //验证码不正确,重定向到登录页 return } else { if models.CheckUser(user.Username) { //判断该用户是否已经存在 flash.Error("该用户已存在!") flash.Store(&this.Controller) this.Redirect("/register", 302) //该用户已存在,重定向到注册页 return } else { err = models.RegisterUser(user) //用户注册 if err != nil { flash.Error("注册用户失败!") flash.Store(&this.Controller) this.Redirect("/register", 302) //验证码不正确,重定向到注册页 return } } } flash.Notice("注册成功!") flash.Store(&this.Controller) this.Redirect("/login", 302) //注册成功,重定向到登录页 return }
// 密码找回修改密码Action func (this *UserController) ModifyPWDAction() { flash := beego.NewFlash() username := this.GetString("username") uid := this.GetString("uuid") password := this.GetString("password") password = models.MD5(password) //将密码以md5加密存放 if username == "" || uid == "" || password == "" { flash.Error("非法的请求!") flash.Store(&this.Controller) this.Redirect("/modifypwd", 302) //重定向到密码找回修改密码页 } user := &models.User{ Username: username, Uuid: uid, Password: password, } if models.UpdatePassWord(user) { user.Exprise = "" //将过期时间重置 user.Uuid = "" //将uuid重置 models.UpdateUser(user) //密码重置成功后,重置标识取回密码的用户信息 flash.Notice("密码修改成功!") flash.Store(&this.Controller) this.Redirect("/login", 302) //重定向到密码找回修改密码页 } else { flash.Error("密码修改失败!") flash.Store(&this.Controller) this.Redirect("/modifypwd", 302) //重定向到密码找回修改密码页 } }