【问题标题】:Capture The Original URL After A Redirect?重定向后捕获原始 URL?
【发布时间】:2013-05-24 18:38:00
【问题描述】:

我正在使用 Rails 3 和 Devise 进行身份验证。

我想跟踪用户何时从另一个域或通过输入 URL 进入我的网站。假设我的网站上有以下页面:

http://www.mysite.com/somepage

如果访问者通过单击另一个站点上的链接或在其浏览器中键入该 URL 来请求此 URL,我想将该 URL 放入 cookie 中以供以后使用。如果/somepage 不需要登录,它可以正常工作。在before_filter 中,我只是检查推荐人是否来自mysite.com

但是,当/somepage 需要登录时,Devise 会进行重定向,从而导致对我的登录页面的第二次请求。原始引荐来源网址将转至新请求。所以我的代码认为它是原始请求的 URL 并覆盖了 cookie。错了。

我可能只是有心理障碍,但我看不出如何确定重定向到的页面不是请求的原始页面。

【问题讨论】:

    标签: ruby-on-rails http devise


    【解决方案1】:

    您可能会从这个article 中得到一些想法。

    您似乎应该过滤掉任何包含用户路径的内容,因为如果页面不需要登录,您可以轻松获取引荐来源网址。

    例如,您可以使用正则表达式过滤掉 users/sign_in、users/sign_out 等。

    request.referrer = request.fullpath unless request.fullpath =~ /\/users/
    

    request.env['HTTP_REFERER'] = request.fullpath unless request.fullpath =~ /\/users/
    

    您需要将它放在authenticate before_filter 上方的某种before_filter 中,以便首先调用它。

    【讨论】:

    • 感谢您的回答。这是行不通的,因为用户可能通过登录页面 ro 注册页面进入网站。
    猜你喜欢
    • 1970-01-01
    • 2019-12-11
    • 2016-11-11
    • 2011-01-18
    • 2016-10-05
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多