【发布时间】:2014-11-22 17:57:38
【问题描述】:
我正在尝试设置一个 gorilla 会话,然后再次检索该值。我正在做以下测试。
//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 处理程序的 sn-p。但是相关部分已发布,对store.Get() 的第二次调用不是返回现有会话,而是返回一个全新的会话。因此,当执行此代码所在的处理程序时,日志语句将打印到控制台。
为什么在这种情况下我得到一个新会话而不是我已经创建和保存的会话?
【问题讨论】:
-
你用的是什么商店?
-
不,这是不同的代码。我第一次发布了错误的代码。同样的问题,不同的问题。
-
我正在使用 CookieStore