## 概述
系統提供了 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)
}
```