dmnBrest
@dmnBrest
Salesforce for money. Python, Go, Ruby for soul.

Как сделать функционал remember me в web приложении на Go?

Привет.
Подскажите решение.

на базе www.gorillatoolkit.org/pkg/sessions сделал авторизацию пользователей
sessionStore = sessions.NewCookieStore([]byte(config.Secret))
sessionStore.Options = &sessions.Options{
HttpOnly: true,
Secure:   false,
}

по умолчанию Expiration для сессионных куки Session (до закрытия браузера).
Это отлично.
Но надо сделать Remember me функционал.
делаю после авторизации
session.Options = &sessions.Options{MaxAge: 86400 * 7}

видно что ответ на post запрос MaxAge приходит, но после редиректа опять пропадает, т.е. опять - включаются значения по умолчанию.
Как бы так правильнее сделать чтобы для данного пользователя значение MaxAge не сбрасывалось.
  • Вопрос задан
  • 2522 просмотра
Решения вопроса 1
dmnBrest
@dmnBrest Автор вопроса
Salesforce for money. Python, Go, Ruby for soul.
В общем вычитал в интернете что в самой session cookie ничего менять не надо, а нужно просто создавать еще одну куку remember_me которая будет содержать что-то совсем секретное, что позволит на стороне сервера определить пользователя и залогинить. А уже в этой самой куке ставить MaxAge какой нужен.

Вот тут очень классно про это написано и не только про это, но и про всю систему авторизации в целом.
stackoverflow.com/questions/549/the-definitive-gui...
про remember_me там советую почитать
fishbowl.pastiche.org/2004/01/19/persistent_login_...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Попробуйте
sessionStore.Options = &sessions.Options{
HttpOnly: true,
Secure: false,
MaxAge: 86400 * 7
}

И вы ведь не забываете
session.Save(r, w)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы