今天要來介紹 Session。
需要在設定裡啟用。
SessionOn = true
啟用之後,要重新啟動。
設定裡也可以指定過期時間、Cookie等。
# 指定 session cookie 名稱
SessionName = "beegosessionID"
# 指定過期時間,單位是秒
SessionGCMaxLifetime = 3600
# 瀏覽器端 cookie 的過期時間,單位是秒
SessionCookieLifeTime = 3600
# 使用 SetCookie
SessionAutoSetCookie = true
# 設定 session cookie domain
SessionDomain = ""
Session 後台的提供者預設是 memory,BeeGo 有提供 mysql, redis, ledis, postgres, memcache, couchbase, ssdb 等後台提供者,要換成別的,可以在設定裡指定。以下是幾種常用的後台提供者設定說明:
# 使用記憶體
SessionProvider = "memory"
# 使用 Redis
SessionProvider = "redis"
# 格式以逗號分隔:server_addr_and_port,pool_size,password,db_num,idle_timeout_in_second
SessionProviderConfig = "127.0.0.1:6379,100,astaxie,0,30"
# 使用 memcache
SessionProvider = "memcache"
# 格式以分號分隔:server1_addr_and_port;server2_addr_and_port;...
SessionProviderConfig = "10.0.0.1:11211;10.0.0.2:11211;10.0.0.3:11212"
# 使用 mysql
SessionProvider = "mysql"
# 格式:[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]
SessionProviderConfig = "user:password@tcp(127.0.0.1:3306)/hello"
# 使用 postgresql
SessionProvider = "postgresql"
# 格式有兩種,第1種以空白分隔,基本的元素有 host, port, user, password, dbname, sslmode
# 例如:host=127.0.0.1 port=5432 user=postgres password=your_password dbname=database_name sslmode=disable
# 第2種,類似 database url
# 例如:postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full
SessionProviderConfig = "host=127.0.0.1 port=5432 user=postgres password=your_password dbname=database_name sslmode=disable"
其他像 ledis, couchbase, ssdb 就暫且按下不表。有需要的人可以參考 beego 原始碼 (beego/session) 下的檔案,主要閱讀重點:
BeeGo 已經把 Session 的操作預先包在 Controller 裡,有這些函式可以使用
func (this *MainController) Get() {
key := "asta"
// 從 session 取得指定鍵值
v := this.GetSession(key)
if v == nil {
// 設定
this.SetSession(key, int(1))
this.Data["num"] = 0
} else {
// 設定
this.SetSession(key, v.(int)+1)
this.Data["num"] = v.(int)
}
this.TplNames = "index.tpl"
}
有這些,基本上就不需要再去看官方文件裡的 Session Module。