如果用户的帐户尚未得到确认,我会尝试重定向用户。所以这涉及到两部分代码:
- 首次创建帐户后重定向用户
- 如果他们在确认帐户之前尝试登录,请重定向他们
我需要第二个方面的帮助。
我首先能够通过放入after_inactive_sign_up_path_for(resource)
在我的自定义 RegistrationsController 中。我尝试对 SessionsController 执行相同的操作,但没有成功。如果用户尚未确认帐户,我需要重写什么才能正确重定向用户?
您可能需要创建自定义 Warden 策略并检查帐户是否需要确认。类似这样的事情:
# 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
这假设用户名和密码作为参数在请求中传递。你可以看看数据库_可验证策略 https://github.com/plataformatec/devise/blob/master/lib/devise/strategies/database_authenticatable.rb有关 Devise 默认情况下如何处理登录身份验证的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)