每次 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
我在 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