コード例 #1
0
ファイル: signin.go プロジェクト: wcreate/lawoto
func (self *SigninController) Post() {
	self.setTemplate()

	flash := beego.NewFlash()
	email := self.GetString("email")
	password := self.GetString("password")
	remember := self.GetString("remember")

	u := new(models.User)
	u.Email = email
	u.Password = password

	if err := u.Read("Email"); err != nil {
		flash.Error("该账号不存在~")
		flash.Store(&self.Controller)
		return
	}

	if utils.HmacSha256(password, u.Salt) != u.Password {
		flash.Error("密码无法通过校验~")
		flash.Store(&self.Controller)
		return
	}

	u.LastLoginTime = time.Now()
	u.LoginCount = u.LoginCount + 1
	u.LastLoginIp = self.GetClientIP()
	u.Update("LastLoginTime", "LoginCount")

	// 登录成功设置session
	self.SetSession("userid", u.Id)
	self.SetSession("username", u.Username)
	self.SetSession("userrole", u.Role)
	self.SetSession("useremail", u.Email)
	self.SetSession("usercontent", u.Content)
	self.SetSession("useravatar", u.Avatar)

	// 设置cookie

	// 设置提示栏cookie标记
	self.Ctx.SetCookie("signbar", SignBarClose, 31536000, "/")
	if remember == RememberOn {
		self.Ctx.SetCookie("remember", RememberOn, 31536000, "/")
	} else {
		self.Ctx.SetCookie("remember", RememberOff, 31536000, "/")
	}
	self.Redirect("/", 302)
}