为了账号安全,请及时绑定邮箱和手机立即绑定

为什么你需要在大猩猩会话中保存一些东西?

为什么你需要在大猩猩会话中保存一些东西?

Go
小怪兽爱吃肉 2022-06-06 14:59:12
我是大猩猩会话(和一般饼干)的初学者,我一直在尝试它。在文档中,他们有以下代码:session, err := store.Get(r, "session-name")if err != nil {    http.Error(w, err.Error(), http.StatusInternalServerError)    return}// Set some session values.session.Values["foo"] = "bar"session.Values[42] = 43// Save it before we write to the response/return from the handler.err = session.Save(r, w)if err != nil {    http.Error(w, err.Error(), http.StatusInternalServerError)    return}根据我对会话的理解,您需要一个成功登录的用户才能接收会话“令牌”,然后将其存储到商店中。这条线似乎store.Get(r, "session-name")就是这样做的,实际上“会话名称”将是成功验证的用户 ID。这里的目标是能够检索和比较未来请求的会话令牌。(对吗?)我不明白的是那些被保存的价值是什么:// Set some session values.session.Values["foo"] = "bar"session.Values[42] = 43我们用它们做什么?是否存储在 cookie 发回给我们时将被检索的额外数据?是否留在后端存储?或以与 JWT 对有效负载中的额外数据进行编码的相同方式编码并添加到 cookie(如用户的角色等)在我看来,只有第一步是必要的,但我不确定其余的,特别是因为store.Get()没有参数应该生成一个会话,如文档示例中所述“//获取一个会话。Get() 总是返回一个会话,即使是空的。” id 所以我可以将它保存在我的数据库/redis/内存中,而根本不使用其余部分。我觉得我错过了什么。
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

store.Get 方法使用 request 对象获取 sessionid,然后从 store 中获取 session 数据,然后创建 session 对象。

session.Values 使用映射来保存会话数据。读写 session.Values 是为了操作会话数据。最后调用 session.Save 方法将新序列化中的数据保存到存储中。


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信