Session 将数组结构设置为golang中的会话
我使用lib github.com/ipfans/echo-session。我可以在设置数组结构时保存会话 这是我的代码: 保存会话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
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看起来存储将实际结构保存在接口下,因此使用指向实际数据值的指针,因此对指针执行类型断言。