W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
beego 內(nèi)置了 session 模塊,目前 session 模塊支持的后端引擎包括 memory、cookie、file、mysql、redis、couchbase、memcache、postgres,用戶也可以根據(jù)相應(yīng)的 interface 實(shí)現(xiàn)自己的引擎。
beego 中使用 session 相當(dāng)方便,只要在 main 入口函數(shù)中設(shè)置如下:
beego.BConfig.WebConfig.Session.SessionOn = true
或者通過配置文件配置如下:
sessionon = true
通過這種方式就可以開啟 session,如何使用 session,請看下面的例子:
func (this *MainController) Get() {
v := this.GetSession("asta")
if v == nil {
this.SetSession("asta", int(1))
this.Data["num"] = 0
} else {
this.SetSession("asta", v.(int)+1)
this.Data["num"] = v.(int)
}
this.TplName = "index.tpl"
}
session 有幾個方便的方法:
session 操作主要有設(shè)置 session、獲取 session、刪除 session。
當(dāng)然你可以通過下面的方式自己控制這些邏輯:
sess:=this.StartSession()
defer sess.SessionRelease()
sess 對象具有如下方法:
但是我還是建議大家采用 SetSession、GetSession、DelSession 三個方法來操作,避免自己在操作的過程中資源沒釋放的問題。
關(guān)于 Session 模塊使用中的一些參數(shù)設(shè)置:
從 beego1.1.3 版本開始移除了第三方依賴庫,也就是如果你想使用 mysql、redis、couchbase、memcache、postgres 這些引擎,那么你首先需要安裝
go get -u github.com/astaxie/beego/session/mysql
然后在你的 main 函數(shù)中引入該庫, 和數(shù)據(jù)庫的驅(qū)動引入是一樣的:
import _ "github.com/astaxie/beego/session/mysql"
當(dāng) SessionProvider 為 file SessionProviderConfig 是指保存文件的目錄,如下所示:
beego.BConfig.WebConfig.Session.SessionProvider="file"
beego.BConfig.WebConfig.Session.SessionProviderConfig = "./tmp"
當(dāng) SessionProvider 為 mysql 時,SessionProviderConfig 是鏈接地址,采用 go-sql-driver,如下所示:
beego.BConfig.WebConfig.Session.SessionProvider = "mysql"
beego.BConfig.WebConfig.Session.SessionProviderConfig = "username:password@protocol(address)/dbname?param=value"
需要特別注意的是,在使用 mysql 存儲 session 信息的時候,需要事先在 mysql 創(chuàng)建表,建表語句如下
CREATE TABLE `session` (
`session_key` char(64) NOT NULL,
`session_data` blob,
`session_expiry` int(11) unsigned NOT NULL,
PRIMARY KEY (`session_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
當(dāng) SessionProvider 為 redis 時,SessionProviderConfig 是 redis 的鏈接地址,采用了 redigo,如下所示:
beego.BConfig.WebConfig.Session.SessionProvider = "redis"
beego.BConfig.WebConfig.Session.SessionProviderConfig = "127.0.0.1:6379"
當(dāng) SessionProvider 為 memcache 時,SessionProviderConfig 是 memcache 的鏈接地址,采用了 memcache,如下所示:
beego.BConfig.WebConfig.Session.SessionProvider = "memcache"
beego.BConfig.WebConfig.Session.SessionProviderConfig = "127.0.0.1:7080"
當(dāng) SessionProvider 為 postgres 時,SessionProviderConfig 是 postgres 的鏈接地址,采用了 postgres,如下所示:
beego.BConfig.WebConfig.Session.SessionProvider = "postgresql"
beego.BConfig.WebConfig.Session.SessionProviderConfig = "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full"
當(dāng) SessionProvider 為 couchbase 時,SessionProviderConfig 是 couchbase 的鏈接地址,采用了 couchbase,如下所示:
beego.BConfig.WebConfig.Session.SessionProvider = "couchbase"
beego.BConfig.WebConfig.Session.SessionProviderConfig = "http://bucketname:bucketpass@myserver:8091"
因?yàn)?session 內(nèi)部采用了 gob 來注冊存儲的對象,例如 struct,所以如果你采用了非 memory 的引擎,請自己在 main.go 的 init 里面注冊需要保存的這些結(jié)構(gòu)體,不然會引起應(yīng)用重啟之后出現(xiàn)無法解析的錯誤。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: