Как справиться с истечением срока действия файлов cookie для входа в систему, если пользователь неактивен в течение установленного времени, используя Ruby on Rails? - PullRequest
2 голосов
/ 14 января 2011

Я пытаюсь управлять сеансом входа пользователей, которые перемещаются в моем приложении RoR3.

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

Как этого добиться?

Ответы [ 3 ]

4 голосов
/ 14 января 2011

Это не дает прямого ответа на ваш вопрос, но я настоятельно рекомендую использовать что-то вроде Devise для аутентификации, а не накатывать свои собственные.

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

2 голосов
/ 14 января 2011

Вы можете установить свойство в своем сеансе.Что-то вроде

session[:expire_time] = 15.minutes.since

Затем в вашем applicationController вы можете проверить, достаточно ли времени у вашего пользователя, чтобы выйти из системы, если нет, то вы продлили срок его действия, например:

 class ApplicationController < ActionController::Base
   before_filter :check_expire

   def check_expire
     if session[:expire_time] and session[:expire_time] < Time.now
       #your code to logout the user
     else
       session[:expire_time] = 15.minutes.since
     end
     return true
  end
end
0 голосов
/ 14 января 2011

Вы также можете установить срок действия куки, который устанавливает их сеанс.В вашей конфигурации:

env["rack.session.options"][:expire_after] = 15.minutes

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

Вот хорошая статья об этом:

http://augustl.com/blog/2010/dynamic_session_expiration_time_in_rails_3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...