warden回调应该放在rails应用程序中的哪个位置?
我对铁路比较陌生。 我有Devise设置,并希望在用户登录后运行一些回调代码。
查看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中。 那是对的吗? 在config目录中放置本质上是控制器代码的感觉并不正确。
应用程序启动时需要使用Warden挂钩,因此在config / initializers / devise.rb中的Devise初始化程序中是一个很好的候选者。
但是,使用此Devisefunction可以更好地完成您想要实现的行为: