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

浙公网安备 33010602011771号