设计Rails超时:token_authenticatable?

时间:2011-12-16 14:57:20

标签: ruby-on-rails-3 devise

你知道如何在Rails上设计一个超时:token_authenticatable策略吗?

我设置了两个:timeoutable和:token_authenticatable

 devise :database_authenticatable, :registerable,
           :recoverable, :trackable, :validatable, :timeoutable,
          :token_authenticatable, :lockable

如果我使用用户名和密码登录,则会正确考虑超时,并且我被要求再次重新登录,而我登录时设置的令牌没有给出任何超时并且它始终有效,直到我执行了正确的注销(因为我在destroy方法中设置了current_user.reset_authentication_token!)。 是否有一种简单的方法来设置令牌超时不是太干扰(即修改设计代码)或没有黑客(即有一个cron作业定期检查最后一次sign_in并在必要时重置令牌)?

感谢

1 个答案:

答案 0 :(得分:1)

我用rake任务做了类似的事情:

namespace :app_name do
  desc "reset all auth_tokens"
  task :reset_auth => :environment do
    users = User.find(:all)
    users.each do |user|
      user.reset_authentication_token!
    end
  end
end

然后是cron:

rake app_name:reset_auth