如何将用户每次`params`包含`redirect_uri`值重定向到一个自定义的网页?(How

2019-10-21 13:20发布

我on Rails的4.1运行Ruby和我想实现一个功能,当他们通过提供一个执行动作将用户重定向到自定义网页redirect_uri参数。 换句话说,我想“触发”每次重定向redirect_uri值存在于params和重定向应在任何情况下发生(例如,当GET,POST,PUT和DELETE HTTP请求与HTML或JS格式执行)后的处理流程已经完全完成(例如,当HTTP动词是POST然后重定向应该提交后发生)。

奖金 -如果可能的话,我想验证URL(例如,链接正确性)的情况下,当引荐网址来自应用程序域之外。

我应该怎样做是正确的方法是什么?

Answer 1:

从这个讨论 ,一旦你的行动遇到redirect_to/render陈述,请求流量将是完整和after_action重定向可能不会trigerred。

如何创造一个像一个控制器动作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


文章来源: How to redirect users to a custom web page each time `params` contain a `redirect_uri` value?