コード例 #1
0
ファイル: user.go プロジェクト: a648132694/goblog
// 密码找回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
	}
}
コード例 #2
0
ファイル: user.go プロジェクト: a648132694/goblog
// 密码找回修改密码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) //重定向到密码找回修改密码页
	}
}