我正在尝试重定向用户,如果他们的帐户尚未确认。所以这涉及代码的两个部分:
我需要第二个帮助。
我可以通过在我的自定义RegistrationsController中输入after_inactive_sign_up_path_for(resource)
来实现。我试过为SessionsController做同样的事情,但它没有用。如果用户尚未确认帐户,我需要过度编写才能正确重定向用户?
答案 0 :(得分:6)
您可能需要创建自定义监管策略并检查帐户是否需要确认。有点像这样:
# config/initializers/my_strategy.rb
Warden::Strategies.add(:my_strategy) do
def valid?
true
end
def authenticate!
u = User.find_for_authentication(:email => params[:email])
if u.nil? || !u.valid_password?(params[:password])
fail(:invalid)
elsif !u.confirmed?
fail!("Account needs confirmation.")
redirect!("your_root_url")
end
else
success!(u)
end
end
#config/initializers/devise.rb
config.warden do |manager|
manager.default_strategies(:scope => :user).unshift :my_strategy
end
这假定用户名和密码作为参数在请求中传递。您可以查看database_authenticable strategy以获取默认情况下Devise如何处理登录身份验证的示例。