我正在使用Rails 3和Devise进行身份验证。
我想跟踪用户何时从其他域进入我的网站或输入网址。假设我的网站上有以下页面:
http://www.mysite.com/somepage
如果访问者通过点击其他网站上的链接或将其输入浏览器来请求此URL,我想将该URL放入cookie中供以后使用。如果/somepage
不需要登录,则可以正常工作。在before_filter
我只是检查引荐来源是否来自mysite.com
。
但是,当/somepage
需要登录时,Devise会进行重定向,从而导致第二次请求登录页面。原始推荐人被转发给新请求。所以我的代码认为它是原始请求的URL并覆盖cookie。错。
我可能只是心理障碍,但我无法确定如何确定重定向到的页面不是原始页面请求。
答案 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
之上,以便首先调用它。