重定向后捕获原始URL?

时间:2013-05-24 18:38:01

标签: ruby-on-rails http devise

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

我想跟踪用户何时从其他域进入我的网站或输入网址。假设我的网站上有以下页面:

http://www.mysite.com/somepage

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

但是,当/somepage需要登录时,Devise会进行重定向,从而导致第二次请求登录页面。原始推荐人被转发给新请求。所以我的代码认为它是原始请求的URL并覆盖cookie。错。

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

1 个答案:

答案 0 :(得分:0)

你可能会从这个article获得一些想法。

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

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

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

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

您需要将其置于before_filter以上authenticate before_filter之上,以便首先调用它。