21

我对rails比较陌生。我已经设置好设计,并希望在用户登录后运行一些回调代码。

查看Warden wiki 页面,我可以使用“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 中。那是对的吗?将本质上是控制器代码的内容放在配置目录中感觉不对。

4

1 回答 1

20

当您的应用程序启动时需要 Warden 挂钩,因此在 Devise 的初始化程序中 config/initializers/devise.rb 是一个不错的选择。

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

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

于 2011-12-02T12:31:33.760 回答