4. Beego 框架之cookie與session
阿新 • • 發佈:2017-12-28
文件夾 emca 添加 入口 on() eth string mysql func
what is cookie?
cookie是存儲在客戶端的,用於標識客戶身份的!
what is session
session 是存儲在服務端,也是用於客戶身份標識,用於跟蹤用戶會話。
BeeGo session保存方式
Beego內置了session模塊,目前session模塊支持的後端引擎包括memory,cookie,file,mysql,redis,couchbase,memcache、postgres,用戶也可以根據相應的interface實現自己的引擎。
beego 啟用session
beego中使用session相當方便,只需要在main入口函數中設置如下:
beego.BConfig.WebConfig.Session.SessionOn = true
或者通過配置文件配置如下:
sessionon = true
session 有幾個方便的方法
1. SetSession(name string,value interface{})
2. GetSession(name string,) interface{}
3. DelSession(name string)
4. SessionRegenerateID()
5. DestorySession()
拿代碼來說話
router.go的代碼
package routers import ( "WEB/controllers" "github.com/astaxie/beego" ) func init() { beego.Router("/test_login", &controllers.TestLoginController{}, "post:PostData;get:Login") // 唯一添加了這條 }
controllers的文件夾
testlogin.go
// testlogin package controllers import ( "github.com/astaxie/beego" ) type TestLoginController struct { beego.Controller } func (c *TestLoginController) SelfTest() { c.Ctx.WriteString("this is myself controller!") } func (c *TestLoginController) Login() { name := c.Ctx.GetCookie("name") password := c.Ctx.GetCookie("password") if name != "" { c.Ctx.WriteString("Username:" + name + "password:" + password) } else { formData := `<html><form action="/test_login" method="post"> <input type="text" name="Username"> <input type="password" name="Password"> <input type="submit" value="post"> </html> ` c.Ctx.WriteString(formData) } } func (c *TestLoginController) PostData() { u := User{} if err := c.ParseForm(&u); err != nil { } c.Ctx.SetCookie("name", u.Username, 100, "/") // 設置cookie c.Ctx.SetCookie("password", u.Password, 100, "/") // 設置cookie c.Ctx.WriteString("username:" + u.Username + " password:" + u.Password) }
我們通過c.Ctx.SetCookie設置cookie後,你在瀏覽器輸入http://ip:port/test_login,填寫用戶密碼提交以後,再次訪問test_login,那麽是不需填寫用戶密碼的了,因為已經保存了session與cookie。
4. Beego 框架之cookie與session