Ruby on rails 3 Rails3站点根重定向和设计-在重定向之前我可以捕获初始URL查询字符串吗?
在我的routes.rb文件中,我的根集如下所示: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
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在某些方面很好,在另一些方面是一个很大的痛苦。。。