beego框架 session处理
session 对象位于服务器端,用来存储特定用户会话所需的属性及配置信息,当用户在应用程序的 Web 页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在。
Beego 框架内置了 session 模块,目前 session 模块支持的后端引擎包括 memory、cookie、file、mysql、redis、couchbase、memcache、postgres,用户也可以根据相应的 interface 实现自己的引擎。
1. 开启 session
beego 默认是关闭 session的,如果想要使用 session 需要在配置文件或程序中设置。
在配置文件中 codebao/conf/app.conf 中开启 session:
sessionon=true
在程序开启 session,通常在 codebao/main.go 中开启:
beego.BConfig.WebConfig.Session.SessionOn = true
在配置文件中,还可以设置 session id 的名字,这个通常都是保存在客户端 cookie 里面:
sessionname = "beegosessionID"
设置 Session 过期的时间, 默认3600秒
sessiongcmaxlifetime = 3600
设置session id的过期时间, 因为session id是保存在 cookie 中的。
SessionCookieLifeTime = 3600
2. session 读写
session 数据的操作函数如下:
- SetSession(name string, value interface{}) - 设置session值
- GetSession(name string) interface{} - 读取session值
- DelSession(name string) - 删除指定session值
- SessionRegenerateID() - 生成新的session id
- DestroySession() - 销毁session
下面是在控制器函数中读写 session 的范例:
// 下面是个简单计数器的例子,通过 session 的 count 字段累计访问量 func (this *MainController) Get() { // 读取session数据 v := this.GetSession("count") if v == nil { // 写入session数据 this.SetSession("count", int(1)) this.Data["num"] = 0 } else { // 写入session数据 this.SetSession("count", v.(int)+1) this.Data["num"] = v.(int) } this.TplName = "user/index.html" }
3. 配置 session 的存储引擎
本节介绍 Session 存储引擎,默认是 memory, 也就是 session 数据默认保存在运行 beego 程序的机器内存中,如果是使用默认配置可以跳过本节内容。
下面分别介绍常用的 session 存储引擎配置方式。
1) session 数据保存到文件
# 设置session保存到文件中 sessionprovider = "file" # session数据保存目录 sessionproviderconfig = "./data/session"
2) session 数据保存到 redis
将 session 数据保存到 redis 中,需要先安装 redis 驱动,然后在 main.go 文件中导入 redis 驱动。
# 设置session存储引擎 sessionprovider = "redis" # redis存储引擎配置 # redis配置格式: redis地址,redis连接池最大连接数,redis密码 # redis连接池和redis密码配置,没有保持为空,例子: 127.0.0.1:6379 sessionproviderconfig = "127.0.0.1:6379,1000,123456"
安装 redis 驱动:
go get github.com/beego/beego/v2/server/web/session/redis
在 main.go 入口文件,导入 redis 驱动
import _ "github.com/beego/beego/v2/server/web/session/redis"
3) session数据保存到 mysql
将 session 数据保存到 mysql 中,需要先安装 mysql 驱动,然后在 main.go 文件中导入 mysql 驱动。
# 设置 session 存储引擎 sessionprovider = "mysql" # mysql 存储引擎配置 sessionproviderconfig = "root:123456@tcp(localhost:3306)/aizws?charset=utf8"
安装 mysql 驱动:
go get github.com/go-sql-driver/mysql
在main.go入口文件,导入mysql驱动
_ "github.com/go-sql-driver/mysql"
下一章:beego框架 日志处理
beego设计了一个专门处理日志的库,方便我在项目中打印各种错误日志,调试日志,使用日志库需要先安装日志库。安装日志库:go get github.com/beego/beego/v2/core/logs