回声会话中间件不保存
Echo sessions middleware not saving
我正在尝试使用为 echo 量身定制的 sessions middleware for the echo web framework. The middleware is essentially just a wrapper around gorilla/sessions。
我基本上只是复制了文档中给出的示例并稍微扩展了它。
e := echo.New()
e.Use(session.Middleware(sessions.NewCookieStore([]byte("Secret"))))
// Add the name "Steve" to the session
e.GET("/login", func(c echo.Context) error {
sess, err := session.Get("session", c)
if err != nil {
return err
}
sess.Options = &sessions.Options{
Path: "/",
MaxAge: 0,
HttpOnly: false,
Secure: true,
}
sess.Values["name"] = "Steve"
sess.Save(c.Request(), c.Response())
return c.NoContent(http.StatusOK)
})
// Reply with the name saved in the session
e.GET("/whoami", func(c echo.Context) error {
sess, err := session.Get("session", c)
if err != nil {
return err
}
return c.JSON(http.StatusOK, sess.Values["name"])
})
我希望先访问 /login
将名称保存到会话中,然后访问 /whoami
并接收名称 "Steve"
。
/login
returns StatusOK
符合预期,但 /whoami
总是 returns null
。为什么名称没有保存到会话中?
问题是由设置 session.Option.Secure = true
引起的。
我在本地测试,没有使用 HTTPS
,所以没有设置 cookie。
我正在尝试使用为 echo 量身定制的 sessions middleware for the echo web framework. The middleware is essentially just a wrapper around gorilla/sessions。
我基本上只是复制了文档中给出的示例并稍微扩展了它。
e := echo.New()
e.Use(session.Middleware(sessions.NewCookieStore([]byte("Secret"))))
// Add the name "Steve" to the session
e.GET("/login", func(c echo.Context) error {
sess, err := session.Get("session", c)
if err != nil {
return err
}
sess.Options = &sessions.Options{
Path: "/",
MaxAge: 0,
HttpOnly: false,
Secure: true,
}
sess.Values["name"] = "Steve"
sess.Save(c.Request(), c.Response())
return c.NoContent(http.StatusOK)
})
// Reply with the name saved in the session
e.GET("/whoami", func(c echo.Context) error {
sess, err := session.Get("session", c)
if err != nil {
return err
}
return c.JSON(http.StatusOK, sess.Values["name"])
})
我希望先访问 /login
将名称保存到会话中,然后访问 /whoami
并接收名称 "Steve"
。
/login
returns StatusOK
符合预期,但 /whoami
总是 returns null
。为什么名称没有保存到会话中?
问题是由设置 session.Option.Secure = true
引起的。
我在本地测试,没有使用 HTTPS
,所以没有设置 cookie。