每次 params 包含 redirect_uri 值时,如何将用户重定向到自定义网页?

How to redirect users to a custom web page each time `params` contain a `redirect_uri` value?

我在 Rails 4.1 上运行 Ruby,我想实现一项功能,当用户通过提供 redirect_uri 参数执行操作时将用户重定向到自定义网页.换句话说,每次 redirect_uri 值出现在 params 时,我都想 "trigger" 重定向,并且重定向应该在任何情况下发生(例如,当 GET 时, POST,PUT 和 DELETE HTTP 请求以 HTML 或 JS 格式执行)在流程完全完成后(例如,当 HTTP 动词是 POST 时,重定向应该在提交后发生)。

Bonus - 如果可能的话,我想验证 URL(例如,link 的正确性),当 referrer URL 来自应用域外。

我应该怎样做才是正确的?

this discussion 开始,一旦您的操作遇到 redirect_to/render 语句,请求流程将完成并且可能不会触发 after_action 重定向。

如何创建一个像 custom_redirect_to 这样的控制器操作:

class ApplicationController < ActionController::Base
  def custom_redirect_to(url)
    redirect_to (params[:redirect_uri].present? ? params[:redirect_uri] : url)
  end
end

然后在您的控制器操作中使用此方法而不是 redirect_to 作为:

def create
  @post = Post.new(params)
  if @post.save
    custom_redirect_to @post
  else
    render 'new'
  end
end