我正在尝试设置 gorilla session ,然后再次检索该值。我正在做以下只是作为测试。
//create session and store in http Cookies
session, err := store.Get(req, "session")
if err != nil {
errCode = http.StatusInternalServerError
return
}
//save a value
session.Values["user_id"] = userTuple.UserId
err = session.Save(req, w)
if err != nil {
errCode = http.StatusInternalServerError
return
}
//try to get the same session that was just created
nr := http.Request{Header: w.Header()}
session, err = store.Get(&nr, "session")
if err != nil {
errCode = http.StatusInternalServerError
return
} else if session.IsNew {
log.Println("New session created instead of old one.")
}
这是一个更大的 HTTP 处理程序的片段。但是相关部分已发布,并且对 store.Get() 的第二次调用不会返回现有 session ,而是一个全新的 session 。因此,当执行此代码所在的处理程序时,日志语句将打印到控制台。
为什么在这种情况下我会得到一个新 session ,而不是我已经创建并保存的 session ?
最佳答案
我感觉我已经回答过这个问题了。您滥用了这个 pkg。幕后context包用于存储请求的状态,通过创建一个新的、不完整的http.Request,上下文包返回一个没有 session 信息的空状态。
看看这个code看看我在说什么。
关于http - 获取现有的 gorilla session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081304/