# 概述

系统提供了 session 管理和操作的支持,面向存储接口开发,目前内置两种存储驱动 redis 和 cookie,存储的 session 数据都会进行 aes 加密; 通过配置项和对是否开启 session,session 存储驱动,超时时间进行配置

...
 [app.session]
        isOpen = true #是否开启session
        driver = "cookie" # 存储驱动类型 redis 或 cookie
        timeout = 1800 #session超时时间 单位:秒
...

# 快速使用

通过控制器的 app.Context 参数进行 session 操作,如下

# session 定义赋值

func ControllerXXX(c *app.Context) error {
   sessionValue:=c.Session().Set("key", "session value")
...
}

# session 获取

func ControllerXXX(c *app.Context) error {
   sessionValue:=c.Session().Get("key")
...
}

# session 删除

func ControllerXXX(c *app.Context) error {
   sessionValue:=c.Session().Delete("key")
...
}

# 其他

session 存储通过 encoding/gob 包进行编码,因该包使用时需要将存储类型提前注册; 因此使用时,如果存储的 session 数据是一个自定义结构类型则需要在程序启动时将改类型进行注册; 否则在程序重启时将无法重现读取到之前存储的 session 信息; 示例如下:

type AdminUser struct {
    Id        int32
    Username  string
    Password  string
}

// 初始化
func init(){
   
    // 初始化注册自定义结构类型
    gob.Register(AdminUser{})


}


// 登录设置session
func LoginDo(c *app.Context) error {

   userInfo:=AdminUser{Id:2,Username:"admin"}
   c.Session().Set("USERLOGIN", userInfo)

}