// ShowLogin 登陆显示 func (c *UserController) ShowLogin() { username := c.Ctx.GetCookie("username") if username != "" { c.Data["username"] = username c.Data["check"] = "checked" } c.TplName = "login.html" } // HandleLogin 登陆处理 func (c *UserController) HandleLogin() { username := c.GetString("username") password := c.GetString("password") remember := c.GetString("remember") beego.Info(remember) if username == "" || password == "" { beego.Info("数据不能为空!") c.Redirect("/login", 302) return } o := orm.NewOrm() user := models.User{} user.UserName = username err := o.Read(&user, "UserName") beego.Info(user) if err != nil { beego.Info("账号不存在", err) c.Redirect("/login", 302) } else { if user.Password == password { // c.Ctx.WriteString("登录成功") if remember == "on" { c.Ctx.SetCookie("username",username,time.Second*3600) }else{ c.Ctx.SetCookie("username",username,-1) } c.SetSession("username",username) c.Redirect("/index",302) } else { c.Ctx.WriteString("密码错误") c.Redirect("/login", 302) } } } // HandleLogout 退出登录 func (c *UserController) HandleLogout() { c.DelSession("username") c.Redirect("/",302) }
在router.go路由配置文件里面加入,注意如果路径是 /article_list,"/article/*"是匹配不到的
package routers import ( "github.com/astaxie/beego" "github.com/astaxie/beego/context" ) func init() { beego.InsertFilter("/article/*",beego.BeforeRouter, filterFunc) } var filterFunc = func(ctx *context.Context){ username := ctx.Input.Session("username") if username==nil{ ctx.Redirect(302,"/login") } }