Поскольку мое приложение включает в себя оплату, у меня есть обычная 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 и каким-то образом также связана с моей моделью пользователя
Давай, ребята, у кого-нибудь есть здесь творческое решение?