beego mysql session_Beego Session

Session模块用于存储客户端用户会话数据

Session模块只支持Cookie方式的请求,若客户端不支持Cookie则无法使用。

Session模块参考database/sql引擎写法,采用一个接口多个实现的方式。

Session模块目前实现的存储驱动包括memory、file、Redis、MySQL

模块

安装模块

$ go get github.com/beego/beego/v2/server/web/session

配置

Session会话配置位于conf/app.go应用配置文件中,默认会话处于关闭状态,默认会话引擎采用的是memory。

会话配置

默认值

描述

SessionOn

false

是否开启会话

SessionProvider

memory

会话引擎

SessionName

beegosessionID

保存在客户端的Cookie名称

SessionGCMaxLifetime

3600

会话过期时长,默认3600秒。

SessionCookieLifeTime

3600

保存在客户端Cookie过期时长,默认3600秒。

SessionAutoSetCookie

true

是否开启以客户端Cookie进行保存会话

SessionDomain

""

客户端Cookie存储域名

默认开启会话后,Beego会将服务端的会话数据保存在内存memory中。开启以客户端Cookie方式存储会话后,若浏览器关闭则会话数据会失效。

开启会话

$ vim conf/app.go

SessionOn = true

获取配置

默认可采用beego.BConfig.WebConfig.Session的方式获取或设置会话的配置选项

beego.BConfig.WebConfig.Session.SessionOn = false

beego.BConfig.WebConfig.Session.SessionProvider = "memory"

beego.BConfig.WebConfig.Session.SessionName = "beegosessionID"

beego.BConfig.WebConfig.Session.SessionGCMaxLifetime = 3600

beego.BConfig.WebConfig.Session.SessionCookieLifeTime = 3600

beego.BConfig.WebConfig.Session.SessionAutoSetCookie = true

beego.BConfig.WebConfig.Session.SessionDomain = ""

例如:使用文件方式存储会话

使用文件方式file存储会话时需定义会话保存路径,会话采用两级目录新建文件的方式根据SessionID来保存对应的Session文件。比如SessionID为015abf2467f55e1b1f799a683a2e0904,则会在sessionProviderConfig文件夹下创建0/1/015abf2467f55e1b1f799a683a2e0904文件来保存。

$ vim conf/app.go

sessionOn = true

sessionProvider = "file"

sessionProviderConfig = "./tmp/session"

导入

导入包

import "github.com/beego/beego/v2/server/web/session"

初始化

初始化全局变量用于存储会话控制器

操作

控制器模块中提供了便捷的方法来操作会话

// StartSession starts session and load old session data info this controller.

func (c *Controller) StartSession() session.Store {

if c.CruSession == nil {

c.CruSession = c.Ctx.Input.CruSession

}

return c.CruSession

}

// SetSession puts value into session.

func (c *Controller) SetSession(name interface{}, value interface{}) {

if c.CruSession == nil {

c.StartSession()

}

c.CruSession.Set(name, value)

}

// GetSession gets value from session.

func (c *Controller) GetSession(name interface{}) interface{} {

if c.CruSession == nil {

c.StartSession()

}

return c.CruSession.Get(name)

}

// DelSession removes value from session.

func (c *Controller) DelSession(name interface{}) {

if c.CruSession == nil {

c.StartSession()

}

c.CruSession.Delete(name)

}

// SessionRegenerateID regenerates session id for this session.

// the session data have no changes.

func (c *Controller) SessionRegenerateID() {

if c.CruSession != nil {

c.CruSession.SessionRelease(c.Ctx.ResponseWriter)

}

c.CruSession = GlobalSessions.SessionRegenerateID(c.Ctx.ResponseWriter, c.Ctx.Request)

c.Ctx.Input.CruSession = c.CruSession

}

// DestroySession cleans session data and session cookie.

func (c *Controller) DestroySession() {

c.Ctx.Input.CruSession.Flush()

c.Ctx.Input.CruSession = nil

GlobalSessions.SessionDestroy(c.Ctx.ResponseWriter, c.Ctx.Request)

}

使用GetSession()方法可获取会话中对应键的值

value := this.GetSession("key")

使用SetSession()方法可设置键值对到当前会话中

this.SetSession("key", value)

使用DelSession()方法可删除指定键的值,删除后值默认会为nil。

this.DelSession("key")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值