我是大猩猩会话(和一般饼干)的初学者,我一直在尝试它。在文档中,他们有以下代码:
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/内存中,而根本不使用其余部分。
我觉得我错过了什么。
侃侃无极
相关分类