首页 > 解决方案 > 尝试重定向到登录页面时,获取此页面不起作用将您重定向了太多次错误

问题描述

我有一个简单的应用程序控制器,我对它的行为感到困惑。它只是不允许我连接到登录页面

class ApplicationController < ActionController::Base
  before_action :do_atthestart

  protected
    def do_atthestart
       redirect_to login_path
    end
end

一旦点击“redirect_to login_path”,我会在浏览器上收到错误消息

此页面无法正常工作重定向您太​​多次

在日志上我得到以下信息

Started GET "/login" for .................................. SessionsController#new 处理为 HTML 重定向到 http://127.0.0.1:3000/login过滤器链因 :do_atthestart 渲染或重定向而停止 已完成 302 在 3 毫秒内找到(ActiveRecord:0.0 毫秒 | 分配:282)

有谁知道如何超越它?

先感谢您

标签: ruby-on-rails

解决方案


before_action正在创建一个无限循环。

它适用于从 继承的任何控制器中的任何操作ApplicationController,包括SessionsController#new. 回调重定向到该操作,然后调用回调,回调重定向到该操作,依此类推。

一种技术是before_action在每个控制器中加载。然后,在您的会话控制器中,您可以排除回调中的函数:

class SessionsController < ApplicationController
  before_action :do_atthestart, except: :new
end

推荐阅读