Ruby on rails 3 Rails3站点根重定向和设计-在重定向之前我可以捕获初始URL查询字符串吗?

Ruby on rails 3 Rails3站点根重定向和设计-在重定向之前我可以捕获初始URL查询字符串吗?,ruby-on-rails-3,logging,routes,devise,Ruby On Rails 3,Logging,Routes,Devise,在我的routes.rb文件中,我的根集如下所示: root :to => "portal#index" http://localhost:3000/?gclid=CPTKkZqfu6kCFVOFzAodLUa9-Q 在门户控制器中,设计步骤以验证用户 before_filter :authenticate_user! 并将用户重定向到/users/sign_ 一切都很好 我在我的日志中看到了很多具有这种url类型的入侵尝试 example.com/?gclid=CPTKkZqfu6

在我的routes.rb文件中,我的根集如下所示:

root :to => "portal#index"
http://localhost:3000/?gclid=CPTKkZqfu6kCFVOFzAodLUa9-Q
在门户控制器中,设计步骤以验证用户

before_filter :authenticate_user!
并将用户重定向到/users/sign_

一切都很好

我在我的日志中看到了很多具有这种url类型的入侵尝试

example.com/?gclid=CPTKkZqfu6kCFVOFzAodLUa9-Q
我想在Rails应用程序中记录该站点的访问者,我想使用这个字符串来区分真正的访问者和入侵企图

但是通过重定向到/users/sign\u in,我丢失了该查询字符串

除了在web服务器日志中,是否有其他方法可以在Rails应用程序中捕获初始查询字符串

一个想法是…我使用的是Rails3,所以我使用的是引擎盖下的机架-我可以通过机架访问字符串吗

谢谢

这是我对自己问题的答案-StackOverflow不让我在8小时内发布答案?!?!?但我可以编辑我的原始问题。。。叹息

在我的应用程序\u控制器中,我添加了这个方法,它在会话中存储当前request.url和上一个request.url

def store_request_url_in_session
  session['request_url_prev'] = session['request_url']
  session['request_url'] = request.url
end
然后在我的身份验证调用之前调用它

before_filter :store_request_url_in_session
before_filter :authenticate_user!
现在,每个操作都会调用它,但它只是分配两个字符串

在我的会话中,我添加了这个过滤器

before_filter :log_http_request
仅当当前操作为“登录”时,才会写入日志记录

def log_http_request
  if request.url =~ /sign_in/
    logger.info("**** #{request.remote_ip} | #{session['request_url']} | #{session['request_url_prev']} ")
  end
  session.delete('request_url')
end
这并不优雅,但它能满足我现在的需要。这样的入侵企图:

root :to => "portal#index"
http://localhost:3000/?gclid=CPTKkZqfu6kCFVOFzAodLUa9-Q
被记录为

**** 127.0.0.1 | http://localhost:3000/users/sign_in | http://localhost:3000/?gclid=CPTKkZqfu6kCFVOFzAodLUa9-Q

欢迎更清洁的解决方案

您可以使用

session[:referer] ||= request.referer

我对Desive不太熟悉,所以不能肯定。只需将其放在门户控制器的索引操作中。

您可以使用

session[:referer] ||= request.referer

我对Desive不太熟悉,所以不能肯定。只需在门户控制器中的索引操作中添加此项。

这不起作用,因为在门户运行之前设计重定向到“登录”#索引-但我想我有一个解决方案-将立即发布…结果是我在8小时内无法回答自己的问题。。。没有足够高的声誉-并且评论没有使用与常规答案相同的格式-StackOverflow在某些方面很好,在另一些方面是一个巨大的痛苦…这并不能像在门户网站运行之前设计重定向到“登录”#索引一样起作用-但我想我有一个解决方案-会立即发布…结果我无法回答我自己的问题8小时的问题。。。没有足够高的声誉-并且评论没有使用与常规答案相同的格式-StackOverflow在某些方面很好,在另一些方面是一个很大的痛苦。。。