Как сохранить авторизацию пользователей SecureSocial?

У меня есть веб-приложение Play 2.0.4, в котором используется SecureSocial, чтобы пользователи могли входить в систему через сторонних поставщиков, таких как Twitter, Facebook и Gmail. В этот момент я не использую свой собственный UsernamePasswordProvider; возможно позже добавлю.

Мне нужно, чтобы мои пользователи оставались в системе в течение длительного времени, может быть, неделю. В моем случае сеанс пользователя просто используется для различных удобных функций, таких как настройки, поэтому риски, связанные с долгоживущими сеансами, определенно менее важны, чем удобство отсутствия необходимости каждый раз входить в систему.

Похоже, что в настоящее время сеанс хранится в эфемерном файле cookie, который исчезает, когда пользователь закрывает браузер. В конфигурационном файле есть параметр sessionTimeOut, но его цель, по-видимому, заключается в завершении сеанса в браузере, который остается открытым в течение длительного времени. По крайней мере, сеанс прерывается сразу же, когда я закрываю и снова открываю браузер, даже если этот тайм-аут установлен на большое число.

Каков рекомендуемый способ удержания пользователей в системе в течение длительного времени?


person AlexR    schedule 20.02.2013    source источник
comment
Похоже, что для своих основных нужд я могу вообще избавиться от securesocial и использовать scribe, а затем вручную установить файл cookie сеанса. Примерно такое же количество кода, но гораздо больше контроля над поведением.   -  person AlexR    schedule 21.02.2013


Ответы (3)


Последний снимок из master (для Play 2.1) имеет новое свойство, которое делает cookie аутентификатора постоянным, если вам это нужно. В файле конфигурации вы можете добавить:

securesocial.cookie.makeTransient=false
securesocial.cookie.absoluteTimeoutInMinutes=1440
securesocial.cookie.idleTimeoutInMinutes=1440

Это сделало бы файл cookie постоянным и продлил бы сеанс 24 часа.

person Jorge    schedule 26.02.2013
comment
Не могли бы вы предоставить решение для этого? Спасибо. - person user237865; 23.04.2013

Для Play 2.2 вам нужно добавить раздел cookie в файл securesocial.conf, например:

cookie {
    name=id
    path=/
    httpOnly=true
    idleTimeoutInMinutes=1440
    absoluteTimeoutInMinutes=1440
}
person maydos    schedule 30.12.2013

конфигурации определяются и используются здесь: Проверка подлинности файлов cookie

вы можете навести указатель мыши на переменную и посмотреть, как используются конфигурации.

две конфигурации: absoluteTimeout и idleTimeout используются для разных целей, это line определяет, когда файл cookie будет считаться действительным.

поэтому я предлагаю вам использовать гораздо большее значение для absoluteTimeoutInMinutes, чем другое

person tazdingo    schedule 22.01.2015