golang martini session。不设置任何值

时间:2015-09-09 10:20:34

标签: session go martini

没有太多的背景,因为它确实是一种应该有效的情况,但事实并非如此。

我正在使用马提尼框架。在一个处理程序中,我正在使用它:

session.Set("deployed", "true")
r.Redirect("/myOtherURL", http.StatusSeeOther)

其中'session'是传递给处理程序的sessions.Session对象。 在加载myOtherURL的处理程序中,我正在使用session.Get但没有返回任何内容。我打印出所有会话内容,并且“已部署”不存在。

可能导致此问题的原因是什么?我可能错过了什么?如果可以的话,我会给出更多的背景,但它真的很简单。

1 个答案:

答案 0 :(得分:1)

只是延伸我的评论/将来帮助其他人:

  • 当您设置一个没有明确Path值的cookie时,cookie会占用当前路径。
  • Cookie仅针对该路径和路径发送 - 不在上面 - 例如

    1. 当您通过/modules
    2. 首次隐式设置时为session.Set(val, key)设置Cookie
    3. Cookie 已发送给/modules/modules/all/modules/detail/12
    4. /about/
    5. 发送 NOT Cookie

这可以通过明确设置路径来解决:

var store = sessions.NewCookieStore([]byte("secret123"))

func main() {
    store.Options.Path = "/"
    ...
}

请注意,您可能不想为所有路线发送Cookie(这是/将要执行的操作) - 因此请使用判断。