session - Revel - 在 session 中存储对象

标签 session go revel

我正在使用带有 revel 的 oauth 包“code.google.com/p/goauth2/oauth”,它创建了一些结构,其中包含相当多的信息。我需要此信息在整个 session 期间保持不变,但 session 只能是字符串类型。有没有比以下方法更好的方法?

c.Session["AccessToken"] = t.Token.AccessToken
c.Session["RefreshToken"] = t.Token.RefreshToken
...

如果不是,我该如何重新分配字符串以创建另一个结构来调用 Client.Get() ?

最佳答案

您可以使用 json将结构“转换”为 string 的包,反之亦然。只知道只有导出的字段以这种方式序列化。

由于 oauth.Token 仅导出字段,因此这将起作用:

if data, err := json.Marshal(t.Token); err == nil {
    c.Session["Token"] = string(data)
} else {
    panic(err)
}

这是从 session 中重建 token 的方法:

if err := json.Unmarshal([]byte(c.Session["Token"]), &t.Token); err != nil {
    panic(err)
}

关于session - Revel - 在 session 中存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758693/

相关文章:

rest - 试图将字符串转换为实例变量

go - 如何查询 GORM 模型

javascript - Express Session 不同的到期时间

go - 如何从 Viper 访问数组中的特定项目

programming-languages - Go语言的应用领域

go - Go中对象的大小

go - 通过 RenderJson 传递多个值

php - 同一浏览器上的多个 session 用于一个 Web 应用程序

php - 使用 PDO 登录后显示个人资料页面

c# - 同一时间同一 IP 的不同 session ID