Session 将数组结构设置为golang中的会话

Session 将数组结构设置为golang中的会话,session,go,Session,Go,我使用lib github.com/ipfans/echo-session。我可以在设置数组结构时保存会话 这是我的代码: 保存会话 type StaffInfor struct { Login_id string Family_name_cc string First_name_cc string Family_name_kana string First_name_kana string Role_id i

我使用lib github.com/ipfans/echo-session。我可以在设置数组结构时保存会话

这是我的代码:

保存会话

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"))

控制台结果显示为空

github.com/ipfans/echo session
正在内部使用
github.com/gorilla/sessions

Gorilla会话对象使用
编码/gob
包序列化。因此,要在会话中存储复杂的数据类型,您必须注册
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。

可能是您的会话存储不正确?要确认此理论,请设置该值并在该值之后立即检索。“在该值之后立即检索”-->确定,会话存储正确“可能是您的会话存储不正确?”表示您的
session.Save()
调用不起作用。您在内部使用的库使用gorilla会话库。因此,最好查看gorilla会话文档,以在会话对象中存储结构。据我测试,如果将字符串设置为会话有效,但数组结构无效。只添加了答案,请查看。谢谢!。我在课程中看到了数据,但在施法时没有得到。我的代码:liststaffinf:=session.Get(“liststaffinf”)。([]statffinf)当类型断言失败时,通常会出现错误。你犯了什么错误?多谢了,那些话救了你的命。。。这应该是正确答案。@cong看起来存储将实际结构保存在接口下,因此使用指向实际数据值的指针,因此对指针执行类型断言。