ruby-on-rails – Devise with Confirmable – 当用户尝试使用未经确认的电子邮件登录时,将用户重定向到自定义页面

前端之家收集整理的这篇文章主要介绍了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,但您可以将其更改为所需的路径.

原文链接:https://www.f2er.com/ruby/272094.html

猜你在找的Ruby相关文章