jjnoob

tizi-beego-12-session

2019-07-29
jjnoob

中午睡不着, 打开电脑, 看会教程.

参考

beego的内置session模块, 通常session实现机制都是在客户端放一个session ID (cookie),然后服务端存储一份session数据与之对应,那么服务端的session数据存储在什么地方,在beego的设计中可以自由配置。

目前session模块支持的常用的存储引擎如下:

  • memory
  • cookie
  • file
  • mysql
  • redis

一. session基本配置

下文提到的配置,在app.conf配置文件中加入面配置,然后重启beego程序即可生效。

打开session,这个配置是必须的,否则beego默认不会开启session

sessionon = true

设置session id的名字,这个通常都是保存在客户端cookie里面

sessionname = "beegosessionID"

设置 Session 过期的时间, 默认3600秒

sessiongcmaxlifetime = 3600

设置session id的过期时间, 因为session id是保存在cookie中的。

SessionCookieLifeTime = 3600

二. 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"
}

session 数据的读写函数如下:

SetSession(name string, value interface{}) - 设置session值
GetSession(name string) interface{} - 读取session值
DelSession(name string) - 删除指定session值
SessionRegenerateID() - 生成新的session id
DestroySession() - 销毁session

三. 配置session的存储引擎

本节介绍Session存储引擎. beego默认是 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/astaxie/beego/session/redis

在main.go入口文件,导入redis驱动:

import _ "github.com/astaxie/beego/session/redis"

(3) session数据保存到mysql中

session数据保存到mysql中,需要先安装mysql驱动,然后在main.go文件中导入mysql驱动。

配置:

# 设置session存储引擎
sessionprovider = "mysql"

# mysql存储引擎配置
sessionproviderconfig = "root:123456@tcp(localhost:3306)/tizi365?charset=utf8"

mysql存储引擎配置使用的是mysql dsn格式.

安装mysql驱动:

go get github.com/astaxie/beego/session/mysql

在main.go入口文件,导入mysql驱动:

import _ "github.com/astaxie/beego/session/mysql"

Similar Posts

Content