Промежуточное программное обеспечение эхо-сессий не сохраняется - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь использовать промежуточное программное обеспечение сеансов для эхо-фреймворка .Промежуточное программное обеспечение - это просто оболочка для горилл / сессий , специально предназначенная для работы с 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 return StatusOK как и ожидалось, но /whoami всегда возвращает null.Почему имя не сохраняется в сеансе?

1 Ответ

0 голосов
/ 31 марта 2019

Проблема вызвана настройками session.Option.Secure = true.

Я тестирую локально и не использую HTTPS, поэтому файл cookie не устанавливается.

...