我正在使用Authlogic进行多个会话 - 我应该如何只使用一种类型的会话?

时间:2012-04-03 02:49:27

标签: ruby-on-rails authlogic

由于我的应用涉及付款,我有一个常规的UserSession以及一个id ==:secure的UserSession来保护涉及金钱的应用领域。常规会话不需要过期,但安全会话应在一段时间不活动后到期。

这是我到目前为止所拥有的

模型/ User.rb

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

模型/ UserSession.rb

self.logout_on_timeout = true

我想延长陈旧?方法,例如this问题:

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

但是这不起作用,因为session.id没有引用数据库中的id列......任何人都有任何想法?

编辑: 其他想法......

  • 在创建会话时为会话设置一些实例方法版本的logout_on_timeout。这样我可以设置secure_session.logout_on_timeout = true,但不能设置regular_session
  • 走出Authlogic并使用cron清扫车或其他东西 - 如果我想每5分钟运行一次这看起来有点荒谬
  • 创建一个名为SecureSession的全新会话模型,其logout_on_timeout == true,并以某种方式与我的用户模型相关联

来吧,伙计们,有人在这里有创造性的解决方案吗?

0 个答案:

没有答案