session控制
开启session
beego项目中开启session有两种方法:在配置文件app.conf中或者在main函数中
app.conf
在配置文件中添加如下一行
sessionon = true
main函数
在main函数中设置如下:
beego.BConfig.WebConfig.Session.SessionOn = true
示例
我们知道,session是通过cookie为载体来实现的,也就是说,在HTTP中传输的session其实是一个key-value的cookie。beego框架中session的cookie载体的key默认为gosessionid
,value为一个加密后的字符串。
我们可以往session中写入key-value对,key-value对就会被加密了一个字符串保存在cookie的value中。看如下示例:
func (controller *MainController) Get() {
username := controller.GetSession("username")
password := controller.GetSession("password")
if username == nil || password == nil {
controller.SetSession("username", "peng")
controller.SetSession("password", "123456")
controller.Ctx.WriteString("username or password not set")
} else {
controller.Ctx.WriteString("username : " + username.(string) + ", password : " + password.(string))
}
}
controller中关于session操作的几个方法如下:
SetSession(name string, value interface{})
GetSession(name string) interface{}
DelSession(name string)
SessionRegenerateID()
DestroySession()
session的其他配置
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 是用来存储保存在客户端的数据。
Reference
Last updated
Was this helpful?