ruby-on-rails – Devise with Confirmable – 当用户尝试使用未
启用“可确认”模块后,Devise将不允许未经确认的用户在预定义的时间段过去之后登录.而是将用户重定向回登录页面,并显示闪烁的消息“您必须在继续之前确认您的帐户”.
这是一个不良的交互模式,因为Flash通知不能为用户提供足够的空间来正确解释访问被拒绝的原因,“确认您的帐户”是指提供重新发送确认的链接,以及如何检查的说明你的垃圾邮件夹等等. 有没有办法改变这个行为重定向到一个特定的URL呢? 解决方法
对不起,我以为你的意思是注册后不能登录.所以下面的工作原理是如何在注册后指导用户,并且您需要做什么来登录是创建一个自定义的Devise :: FailureApp
请参阅维基页面:https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-when-the-user-can-not-be-authenticated 然后在您的自定义FailureApp覆盖redirect_url方法从https://github.com/plataformatec/devise/blob/master/lib/devise/failure_app.rb: def redirect_url if warden_message == :unconfirmed custom_redirect_path else super end end 注册后自定义重定向: 在RegistrationsController中有一个控制器方法after_inactive_sign_up_path_for可以覆盖以完成此操作. 首先在路由中,您需要指定使用您的自定义控制器: 配置/ routes.rb文件: devise_for :users,:controllers => { :registrations => "users/registrations" } 第二,您创建从普通控制器继承的自定义控制器,以覆盖该方法: 应用程序/控制器/用户/ registrations_controller.rb class Users::RegistrationsController < Devise::RegistrationsController protected def after_inactive_sign_up_path_for(resource) signed_up_path end end 在这种情况下,我的App我的Devise模型是用户,所以如果您的模型的名称不同,您可能需要更改该命名空间.我希望我的用户被重定向到signed_up_path,但您可以将其更改为所需的路径. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |