在golang中将数组结构设置为session

时间:2017-06-29 06:12:12

标签: session go

我使用lib github.com/ipfans/echo-session。我可以在设置数组struct

时保存会话

这是我的代码:

保存会话

type StaffInfor struct {
    Login_id         string
    Family_name_cc   string
    First_name_cc    string
    Family_name_kana string
    First_name_kana  string
    Role_id      int
    Password     string
    Message_invalid  []string
}
~~~
session := session.Default(c)
session.Set("test", listStaffInfor)// listStaffInfor is array struct StaffInfor 
session.Save()

从会话中获取

session := session.Default(c)
fmt.Println(session.Get("test"))

控制台结果显示为空

1 个答案:

答案 0 :(得分:1)

图书馆github.com/ipfans/echo-session在内部使用github.com/gorilla/sessions

使用encoding/gob包序列化Gorilla会话对象。因此,要在会话中存储复杂的数据类型,您必须注册struct

type StaffInfor struct {
    Login_id         string
    Family_name_cc   string
    First_name_cc    string
    Family_name_kana string
    First_name_kana  string
    Role_id          int
    Password         string
    Message_invalid  []string
}

type ListStaffInfor []StaffInfor

func init() {
   gob.Register(&StaffInfor{})
   gob.Register(&ListStaffInfor{})
}

注意:如果您正在使用基于cookie的会话,则不建议将大对象存储到会话中,因为您可能会将cookie大小限制为4KB。