// 密码找回Action func (this *UserController) GetPwdAction() { flash := beego.NewFlash() username := this.GetString("username") //获取用户名 mail := this.GetString("email") //获取电子邮件 if models.CheckUserExists(username, mail) { //根据用户名和电子邮件验证用户是否存在 var uid, exprise string //计算24小时后的时间并格式化 exprise = time.Now().Local().Add(time.Hour * 24).Format("2006-01-02 15:04:05") //24小时后 uid = uuid.New() //生成一个uuid标识串 url := "http://127.0.0.1:8081/modifypwd?username="******"&uuid=" + uid content := "<strong>亲爱的" + username + ":</strong><p>系统检测到你的找回密码请求,请点击该链接或拷贝到浏览器以继续。24小时内有效!<a href=\"" + url + "\" target=\"_blank\">" + url + "</a></p>" user := &models.User{ Username: username, Email: mail, Uuid: uid, Exprise: exprise, } if models.UpdateUser(user) { //更新uuid和密码找回失效时间到数据库中 //用户存在,发取回密码的邮件 e := &email.Email{ To: []string{mail}, From: "*****@*****.**", Subject: "找回密码,24小时内有效", HTML: []byte(content), Headers: textproto.MIMEHeader{}, } err := e.Send("smtp.163.com:25", smtp.PlainAuth("", "username", "******", "smtp.163.com")) //应用环境中需要替换username和password为有效的值 if err != nil { beego.Error("邮件发送失败:" + err.Error()) flash.Error("邮件发送失败,请稍后再试!") flash.Store(&this.Controller) this.Redirect("/getpwd", 302) //重定向到密码找回页 } else { flash.Notice("密码找回邮件已发送,请到邮箱中查看!") flash.Store(&this.Controller) this.Redirect("/getpwd", 302) //重定向到密码找回页 } } else { flash.Error("请求失败!") flash.Store(&this.Controller) this.Redirect("/getpwd", 302) //重定向到密码找回页 return } } else { flash.Error("该用户不存在!") flash.Store(&this.Controller) this.Redirect("/getpwd", 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) //重定向到密码找回修改密码页 } }