config.allow_insecure_sign_in_after_confirmation
Devise 不再支持该标志。
虽然您应该知道在用户确认帐户时自动登录可能存在的安全问题(http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure -defaults/ ),对于某些应用程序而言,用户体验方面的好处可能值得安全权衡。
毕竟,安全风险在于 a) 用户输入错误的电子邮件,b) 他们没有立即纠正错误,c) 他们输入的电子邮件对应于有效且有效的电子邮件,d) 错误接收的人电子邮件将其打开并单击链接。
如果这是您的应用程序可接受的风险概况,您可以覆盖设计 ConfirmationsController:
class ConfirmationsController < Devise::ConfirmationsController
def show
self.resource = resource_class.confirm_by_token(params[:confirmation_token])
yield resource if block_given?
if resource.errors.empty?
set_flash_message(:notice, :confirmed) if is_flashing_format?
sign_in(resource) # <= THIS LINE ADDED
respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
else
respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
end
end
end
并在你的路由到它routes.rb
:
devise_for :users, controllers: { confirmations: 'confirmations' }