加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Devise with Confirmable – 当用户尝试使用未

发布时间:2020-12-16 19:51:50 所属栏目:百科 来源:网络整理
导读:启用“可确认”模块后,Devise将不允许未经确认的用户在预定义的时间段过去之后登录.而是将用户重定向回登录页面,并显示闪烁的消息“您必须在继续之前确认您的帐户”. 这是一个不良的交互模式,因为Flash通知不能为用户提供足够的空间来正确解释访问被拒绝的原
启用“可确认”模块后,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,但您可以将其更改为所需的路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读