http - 获取现有的 gorilla session

标签 http session go gorilla

我正在尝试设置 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/

相关文章:

php - 我的虚拟主机正在将 ?PHPSESSID=fgh2h45... 添加到 URL 的末尾

mongodb - golang 中的聚合查询

go - Reflect函数消除了开关和if语句在函数中的混合

javascript - angulars HttpParams 对象的 set 和 append 方法有什么区别?

android - 如何在android中连接服务器数据库而不会丢失/失败?

c# - 如何在 Http 响应完成之前读取响应流

php - 从其他类访问登录的 User 对象的最佳实践

http - 对 CORS 请求的 304 Not Modified 响应是否应该包含 CORS header ?

java - 谷歌应用程序引擎跨模块 session (java,guice)

go - 无法解析参数