golang martini session. Не устанавливайте никаких значений
С этим не так много контекста, потому что это действительно ситуация, когда что-то должно работать, но это не так.
Я использую мартини фреймворк. В одном обработчике я использую это:
session.Set("deployed", "true")
r.Redirect("/myOtherURL", http.StatusSeeOther)
При этом "сессия" - это сеанс. Объект сеанса, передаваемый обработчику. В обработчике, который загружает myOtherURL, я использую session.Get, но ничего не возвращается. Я распечатал все содержимое сеанса, а "развернутый" нет.
Что может быть причиной этой проблемы? Что я мог упустить? Я бы дал больше контекста, если бы мог, но на самом деле все так просто.
1 ответ
Просто чтобы расширить мой комментарий / помочь другим в будущем:
- Когда вы устанавливаете куки без явного
Path
значение, cookie принимает текущий путь. Cookies отправляются только по этому пути и пути ниже - не выше - например,
- Набор cookie для
/modules
когда вы неявно установите его в первый раз с помощьюsession.Set(val, key)
- Cookie отправлено на
/modules
,/modules/all
а также/modules/detail/12
- Cookie НЕ отправляется для
/about
или же/
- Набор cookie для
Это можно исправить, явно указав путь:
var store = sessions.NewCookieStore([]byte("secret123"))
func main() {
store.Options.Path = "/"
...
}
Имейте в виду, что вы можете не захотеть отправлять куки для всех маршрутов (вот что /
будет делать) - так что используйте суждение.