gpt4 book ai didi

go - 为什么你需要在 gorilla session 中保存一些东西?

转载 作者:行者123 更新时间:2023-12-01 22:13:46 24 4
gpt4 key购买 nike

我是 gorilla session (和一般 cookies )的初学者,我一直在尝试它。
在文档中,他们有以下代码:

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
}

根据我对 session 的理解,您需要一个成功登录的用户才能接收 session “ token ”,然后将其存储到商店中。
看来这条线 store.Get(r, "session-name")正在这样做,实际上“ session 名称”将是成功验证的用户 ID。
这里的目标是能够检索和比较 future 请求的 session token 。(对吗?)

我不明白的是那些被保存的值(value)是什么:
// Set some session values.
session.Values["foo"] = "bar"
session.Values[42] = 43

我们用它们做什么?是否存储在 cookie 发回给我们时将被检索的额外数据?是否留在后端存储?或以与 JWT 对有效负载中的额外数据进行编码的相同方式编码并添加到 cookie(如用户的角色等)

在我看来,只有第一步是必要的,但我不确定其余的,尤其是因为 store.Get()the doc example " // Get a session. Get() always returns a session, even if empty." 中所述,没有参数应该生成 session 。 id 所以我可以将它保存在我的数据库/redis/内存中,而根本不使用其余部分。

我觉得我错过了什么。

最佳答案

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

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

关于go - 为什么你需要在 gorilla session 中保存一些东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61944796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com