【问题标题】:hide or encrypt form params in url rails 3在 url rails 3 中隐藏或加密表单参数
【发布时间】:2012-07-06 00:01:34
【问题描述】:

我有这个表格:

<%= form_tag posts_path, :method => :get, :class => "search_nav" do %>
    <%= text_field_tag :search, params[:search], :class => "input-long search-query", :placeholder => "#{t('.search_nav')}"  %>
     <%= hidden_field_tag('ip', "#{request.ip}") %>
     <%= hidden_field_tag('city', "#{request.location.city}") %>
     <%= hidden_field_tag('country', "#{request.location.country}") %>
     <%= content_tag(:div, "",:class => "icon-search") %>
<% end %>

我得到一个类似的网址:

http://localhost:3000/en/posts?utf8=%E2%9C%93&search=check+params&ip=127.0.0.1&city=&country=Reserved

我的问题是:

我可以隐藏或加密网址参数ip, city and country吗?

我不能使用POST,因为我有分页结果:

<a rel="2" href="/en/posts?city=&country=Reserved&ip=127.0.0.1&page=2&search=check+params&utf8=%E2%9C%93">2</a> 
<a rel="3" href="/en/posts?city=&country=Reserved&ip=127.0.0.1&page=3&search=check+params&utf8=%E2%9C%93">3/a> 

【问题讨论】:

  • 为什么需要将那些隐藏字段添加到表单中?它们都是请求对象的一部分,因此您不妨直接从处理表单提交的控制器操作中访问它们。
  • 您的回答是正确的。我可以在我的控制器上获取 ip、城市和国家。谢谢!

标签: ruby-on-rails ruby-on-rails-3 pagination sunspot


【解决方案1】:

加密 URL 参数是毫无意义的。为什么不希望用户看到这些值?当然可以在将它们添加到表单之前对其进行加密,但这真的有必要吗?

此外,也许更重要的是,如果这些值是基于请求的,那么您很有可能一开始就不需要提交它们。 #{request.xxx} 在结果页面上将与在表单页面上相同。有什么好的理由传递这些吗?通过将这些作为 GET 参数提交,您实际上是在向服务器发送冗余信息。 Ruby/Rails 已经在加载下一页时根据 IP 地址自动计算这些值。

这里的问题不在于表单,而在于您在设计它时应用的逻辑。我认为您可能过度分析了自己的情况,需要退后一步重新思考问题。

【讨论】:

  • 谢谢,但@Teoulas 的评论是正确的,我不需要在我的表单中获取 ip、国家和城市。我可以在我的控制器中获取此参数。谢谢!
猜你喜欢
  • 2019-11-26
  • 2014-03-03
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多