session 介绍
session 模块是用来存储客户端用户,session 模块目前只支持 cookie 方式的请求,如果客户端不支持 cookie,那么就无法使用该模块。
session 模块参考了 database/sql 的引擎写法,采用了一个接口,多个实现的方式。目前实现了 memory、file、Redis 和 MySQL 四种存储引擎
1,beego 中使用 session 相当方便,只要在 main 入口函数中设置如下:
beego.BConfig.WebConfig.Session.SessionOn = true
2,或者通过配置文件配置如下:
sessionon = true
目前 session 模块支持的后端引擎包括 memory、cookie、file、mysql、redis、couchbase、memcache、postgres
session 有几个方便的方法:
SetSession(name string, value interface{})//
GetSession(name string) interface{}//
DelSession(name string)//
SessionRegenerateID()//
DestroySession()//
当然你可以通过下面的方式自己控制这些逻辑:
sess:=this.StartSession()
defer sess.SessionRelease()
sess 对象具有如下方法:
sess.Set()
sess.Get()
sess.Delete()
sess.SessionID()
sess.Flush()
beego.BConfig.WebConfig.Session.SessionOn
设置是否开启 Session,默认是 false,配置文件对应的参数名:sessionon。
beego.BConfig.WebConfig.Session.SessionProvider
设置 Session 的引擎,默认是 memory,目前支持还有 file、mysql、redis 等,配置文件对应的参数名:sessionprovider。
beego.BConfig.WebConfig.Session.SessionName
设置 cookies 的名字,Session 默认是保存在用户的浏览器 cookies 里面的,默认名是 beegosessionID,配置文件对应的参数名是:sessionname。
beego.BConfig.WebConfig.Session.SessionGCMaxLifetime
设置 Session 过期的时间,默认值是 3600 秒,配置文件对应的参数:sessiongcmaxlifetime。
beego.BConfig.WebConfig.Session.SessionProviderConfig
设置对应 file、mysql、redis 引擎的保存路径或者链接地址,默认值是空,配置文件对应的参数:sessionproviderconfig。
beego.BConfig.WebConfig.Session.SessionHashFunc
默认值为 sha1,采用 sha1 加密算法生产 sessionid
beego.BConfig.WebConfig.Session.SessionHashKey
默认的 key 是 beegoserversessionkey,建议用户使用的时候修改该参数
beego.BConfig.WebConfig.Session.SessionCookieLifeTime
设置 cookie 的过期时间,cookie 是用来存储保存在客户端的数据。
一个 JSON 字符串,传入 Manager 的配置信息
cookieName: 客户端存储 cookie 的名字。
enableSetCookie,omitempty: 是否开启 SetCookie,omitempty 这个设置
gclifetime: 触发 GC 的时间。
maxLifetime: 服务器端存储的数据的过期时间
secure: 是否开启 HTTPS,在 cookie 设置的时候有 cookie.Secure 设置。
sessionIDHashFunc: sessionID 生产的函数,默认是 sha1 算法。
sessionIDHashKey: hash 算法中的 key。
cookieLifeTime: 客户端存储的 cookie 的时间,默认值是 0,即浏览器生命周期。
providerConfig: 配置信息,根据不同的引擎设置不同的配置信息,详细的配置请看下面的引擎设置
globalSessions 有多个函数如下所示:
SessionStart 根据当前请求返回 session 对象
SessionDestroy 销毁当前 session 对象
SessionRegenerateId 重新生成 sessionID
GetActiveSession 获取当前活跃的 session 用户
SetHashFunc 设置 sessionID 生成的函数
SetSecure 设置是否开启 cookie 的 Secure 设置
返回的 session 对象是一个 Interface,包含下面的方法
Set(key, value interface{}) error
Get(key interface{}) interface{}
Delete(key interface{}) error
SessionID() string
SessionRelease()
Flush() error
引擎设置
上面已经展示了 memory 的设置,接下来我们看一下其他三种引擎的设置方式:
mysql
其他参数一样,只是第四个参数配置设置如下所示,详细的配置请参考 mysql:
username:password@protocol(address)/dbname?param=value
redis
配置文件信息如下所示,表示链接的地址,连接池,访问密码,没有保持为空:
注意:若使用redis等引擎作为session backend,请在使用前导入 < _ “github.com/astaxie/beego/session/redis” >
否则会在运行时发生错误,使用其他引擎时也是同理。