Я использую Authlogic с несколькими сессиями - как мне истечь только один тип сессии? - PullRequest
1 голос
/ 03 апреля 2012

Поскольку мое приложение включает в себя оплату, у меня есть обычная UserSession, а также UserSession с id ==: secure для защиты областей приложения, связанных с деньгами.Обычный сеанс не должен истекать, но безопасный сеанс должен истечь после периода бездействия.

Вот что у меня есть

models / User.rb

acts_as_authentic do |c|
  c.session_ids = [nil,:secure]
  c.logged_in_timeout(5.minutes)
  ...
end

models / UserSession.rb

self.logout_on_timeout = true

Я думал о расширении устаревших?метод, как в этот вопрос:

def stale?
  return false if self.id != :secure
  super
end

, но это не работает, потому что session.id не ссылается на столбец id в базе данных ... у кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ: Другие идеи ...

  • установить некоторую версию logout_on_timeout методом экземпляра для сессий, когда я их создаю.Таким образом, я мог бы установить secure_session.logout_on_timeout = true, но не normal_session
  • выходить за пределы Authlogic и использовать cron sweeper или что-то в этом роде - это кажется довольно смешным, если я хочу запускать задание каждые 5 минут
  • создать совершенно новую модель сеанса, называемую SecureSession, которая имеет logout_on_timeout == true и каким-то образом также связана с моей моделью пользователя

Давай, ребята, у кого-нибудь есть здесь творческое решение?

...