Rya*_*nJM 2 devise ruby-on-rails-3
我正在尝试重定向用户,如果他们的帐户尚未确认.所以这涉及代码的两个部分:
我需要帮助第二个.
我可以通过after_inactive_sign_up_path_for(resource)在我的自定义RegistrationsController中输入第一个.我试过为SessionsController做同样的事情,但它没有用.如果用户尚未确认帐户,我需要过度写入才能正确重定向用户?
您可能必须创建自定义监管策略并检查帐户是否需要确认.这种类似的东西:
# 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
Run Code Online (Sandbox Code Playgroud)
这假定用户名和密码作为参数在请求中传递.您可以查看database_authenticable策略,以获取默认情况下Devise如何处理登录身份验证的示例.