登录
首页 >  Golang >  Go问答

Echo 会话中间件不存储信息

来源:stackoverflow

时间:2024-03-04 11:57:30 352浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Echo 会话中间件不存储信息》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我正在尝试将会话中间件用于 echo web 框架。中间件本质上只是 gorilla/sessions 的包装器,专为与 echo 一起使用而定制。

我基本上只是复制了文档中给出的示例并对其进行了稍微扩展。

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 按预期返回 statusok,但 /whoami 始终返回 null。为什么名称没有保存到会话中?


解决方案


该问题是由设置 session.Option.Secure = true 引起的。

我正在本地测试,没有使用 HTTPS,因此未设置 cookie。

到这里,我们也就讲完了《Echo 会话中间件不存储信息》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>