beego登录退出与检查登录过滤器

// 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")
	}
}

猜你喜欢

转载自www.cnblogs.com/Mishell/p/12176267.html