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

[1] https://beego.me/docs/mvc/controller/session.md

Last updated

Was this helpful?