Ruby-on-Rails:如何摆脱 "you are being redirected"页面

标签 ruby-on-rails redirect devise http-status-codes http-status-code-401

我正在覆盖 Devise 的失败响应,以便我可以设置 401 状态代码。但是,当用户登录失败时,他们将被重定向到带有“您正在被重定向”链接的页面。如果我删除此 :status => 401从重定向它工作正常。

class CustomFailure < Devise::FailureApp
    def redirect_url
      new_user_session_url(:subdomain => 'secure')
    end

    def respond
        if http_auth?
           http_auth
        else
           store_location!
           flash[:alert] = i18n_message unless flash[:notice]
           redirect_to redirect_url, :status => 401
        end
    end
end

编辑

或者,我想显示 flash 消息并保持在同一页面上,但添加以下代码行:
render :text => "unauthorized", :status => 401

导致 ruby​​ 提示:
undefined method `render' for #<CustomFailure:0x00000103367f28>

这里发生了什么事?

最佳答案

重定向的正确 HTTP 状态采用 30x 形式(301 和 302 是最常用的)。默认情况下,redirect_to 帮助程序在 HTTP 响应上设置 302 状态 header 。如果您覆盖它并将其设置为 401,您的 Web 浏览器将假定响应是常规网页并呈现响应正文——在重定向中,它是样板文本“您正在被重定向”。

关于Ruby-on-Rails:如何摆脱 "you are being redirected"页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4310913/

相关文章:

ruby-on-rails - 在 Gemfile 中列出的任何 gem 源中都找不到 gem 'mysql2 (< 0.5, >= 0.3.18)'

ruby-on-rails - 针对外部 API 验证 Rails 模型

ruby-on-rails - 有没有办法将 "before_filter :authenticate_user!"与表中的 bool 值一起使用?

ruby-on-rails - 我可以用 Spock 做这个吗?

javascript - Rails 中带有 'Next' 和 'Previous' 按钮的表单 (Javascript)

python - Django的login_required装饰器不会重定向到上一页

.htaccess - 如何使用 .htaccess 重定向字符串?

python - 将标准错误重定向到日志,想要添加时间戳

ruby-on-rails - 在 Devise 重定向请求密码时维护 UTM 代码

ruby-on-rails - Devise in Rails 4 的自定义 session Controller