warden回调应该放在rails应用程序中的哪个位置?

时间:2011-09-11 02:00:56

标签: ruby-on-rails devise warden

我对铁杆比较陌生。我设置了Devise,并希望在用户登录后运行一些回调代码。

查看Warden wiki page,我可以使用“after_set_user”回调来执行此逻辑,例如:

Warden::Manager.after_set_user do |user, auth, opts|
  unless user.active?
    auth.logout
    throw(:warden, :message => "User not active")
  end
end

但是,我不确定我应该在哪里存储这些东西。我的第一个想法是我可以把它放在config / initializers / devise.rb中。那是对的吗?在config目录中放置本质上是控制器代码的感觉并不合适。

1 个答案:

答案 0 :(得分:20)

应用程序启动时需要使用Warden钩子,所以在devise的config / initializers / devise.rb初始化器中是一个很好的候选者。

但是,使用此Devise功能可以更好地实现您想要实现的行为:

https://github.com/plataformatec/devise/wiki/How-To:-Customize-user-account-status-validation-when-logging-in