在Authlogic中为登录超时创建多个值



我的目标是在60分钟后超时管理会话,并在5天后让普通用户超时。我有一个使用Authlogic进行身份验证的User模型。users表有一个名为"role"的列,它接受一个字符串。

  t.string   "role"

当用户是admin时,role将包含字符串'admin'。我想过扩展logged_in_timeout,但还没有弄清楚如何使其工作。我看过的另一种方法是创建多个会话并使:admin会话超时更快,但再一次……我不确定如何实现这一目标,因为两个会话都将引用相同的用户模型。以下是我的文件:

class User < ActiveRecord::Base
  acts_as_authentic do |config|
    config.login_field = :email
    config.logged_in_timeout = 5.days
  end
end
会话模式:

class UserSession < Authlogic::Session::Base
  logout_on_timeout true
end

UserSessionsController是标准的,有新的create和destroy方法。任何见解将不胜感激,谢谢!

这是我找到的解决方案。我确实从authlogic扩展了logged_in_timeout的定义来使用这个新逻辑。我在User模型中这样做了:

class User < ActiveRecord::Base
  acts_as_authentic do |config|
    config.login_field = :email
    config.logged_in_timeout = 5.days
  end
  <...>
  def logged_in_timeout
    if self.role == 'admin'
      60.minutes
    else
      self.class.logged_in_timeout
    end
  end
end

最新更新