Ruby on rails 设计:在用户身份验证失败时重定向到不同路径

Ruby on rails 设计:在用户身份验证失败时重定向到不同路径,ruby-on-rails,devise,Ruby On Rails,Devise,我正在努力寻找一种定制验证用户身份的方法这样,如果用户未登录,它将重定向到beta注册页面,而不是重定向到登录页面 有没有一种方法可以通过向authenticate\u用户添加如下内容,有条件地将重定向路径更改为beta注册页面方法 ENV['BETA_MODE'] ? redirect_to beta_signup_path : redirect_to login_path 您需要将自定义设计控制器添加到应用程序中。你可以这样做 在config/routes.rb文件中 devise_for

我正在努力寻找一种定制
验证用户身份的方法
这样,如果用户未登录,它将重定向到beta注册页面,而不是重定向到登录页面

有没有一种方法可以通过向
authenticate\u用户添加如下内容,有条件地将重定向路径更改为beta注册页面方法

ENV['BETA_MODE'] ? redirect_to beta_signup_path : redirect_to login_path

您需要将自定义设计控制器添加到应用程序中。你可以这样做

config/routes.rb
文件中

devise_for :users, controllers: { registrations: "registrations" }
将以下控制器内容添加到
app/controllers/registrations\u controller.rb

class RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    ENV['BETA_MODE'] ? beta_signup_path : login_path
  end
end
类注册控制器

更多信息:

我找到了第一次提到的修复方法

我在
config/initializers/designe.rb
中定义了一个自定义身份验证失败类,如下所示:

config.warden do |manager|
  manager.failure_app = CustomAuthenticationFailure
end
之后,我在
/vendor
中创建了一个名为
custom\u authentication\u failure.rb的文件。该文件的内容如下所示:

class CustomAuthenticationFailure < Devise::FailureApp
  protected

  def redirect_url
    ENV['BETA_MODE'] ? beta_signup_path : new_user_session_path
  end
end

我不想在注册后重定向。
验证用户身份方法用于检查用户在访问特定路由之前是否已登录。因此,如果
user\u验证
失败我希望它重定向到
beta_注册路径
。你知道你是否可以访问资源详细信息,如用户在重定向时输入的电子邮件,因为我面临类似问题,如果身份验证失败,需要知道用户名。
config.autoload_paths += %W(#{config.root}/vendor)