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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM