duanluo5096 2019-03-30 21:56
浏览 65
已采纳

回声会话中间件未保存

I am trying to use the sessions middleware for the echo web framework. The middleware is essentially just a wrapper around gorilla/sessions tailored to work with echo.

I have basically just copied the example given in the documentation and extended it slightly.


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"])
    })

I expect to first visit /login to save the name to the session, and then visit /whoami and receive the name "Steve".

/login returns StatusOK as expected, but /whoami always returns null. Why isn't the name being saved to the session?

  • 写回答

1条回答 默认 最新

  • douchuang4181 2019-03-31 01:58
    关注

    The issue is caused by settings session.Option.Secure = true.

    I am testing locally and not using HTTPS so the cookie is not being set.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊