英文:
Set array struct to session in golang
问题
我使用的是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是StaffInfor数组结构
session.Save()
从会话中获取
session := session.Default(c)
fmt.Println(session.Get("test"))
控制台结果显示为空。
英文:
I use lib github.com/ipfans/echo-session. I can save session when set array struct
This my code:
Save 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()
Get from session
session := session.Default(c)
fmt.Println(session.Get("test"))
Console result display empty
答案1
得分: 1
github.com/ipfans/echo-session
库在内部使用github.com/gorilla/sessions
库。
Gorilla session对象使用encoding/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)。
英文:
Library github.com/ipfans/echo-session
is using github.com/gorilla/sessions
internally.
Gorilla session object is serialised using the encoding/gob
package. So to store a complex datatype within a session you have to register your 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{})
}
Note: If you're using cookie based session, it is not advised to store large object into session, because you might hit cookie size limitation 4KB.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论