【发布时间】:2010-09-07 15:50:45
【问题描述】:
我目前在 View 中使用 link_to 助手将 title 、 author 、 image_url 和 isbn 等参数传递回控制器
<%= link_to 'Sell this item',new_item_path(:title => title, :author => authors, :image_url=>image, :image_url_s=>image_s, :isbn=>isbn, :isbn13=>isbn13 ) %>
控制器随后会将参数分配给一个对象,以便稍后在 View 中(在 new.html.erb 中)中使用该对象
def new
@item = Item.new
@item.title = params[:title]
@item.author = params[:author]
@item.image_url = params[:image_url]
@item.image_url_s = params[:image_url_s]
@item.isbn = params[:isbn]
@item.isbn13 = params[:isbn13]
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @item }
end
end
new.html.erb 然后将被调用。 一切正常,但 url 显示了所有参数
http://localhost:3000/items/new?author=Michael+Harvey&image_url=http://ecx.images-amazon.com/images/I/51vt1uVjvLL._SL160_.jpg&image_url_s=http://ecx.images-amazon.com/images/I/51vt1uVjvLL._SL75_.jpg&isbn13=9780307272508&isbn=0307272508&title=The+Third+Rail
有什么方法可以让参数不显示在 URL 上?
【问题讨论】:
-
为什么需要它?这些参数从何而来?是来自用户输入还是来自哪里?在我看来,您似乎正在以一种奇怪的方式做某事。请解释你为什么这样做,因为可能有更好的方法。
-
这些参数由亚马逊以 xml 格式的输出返回。我有一个搜索栏,允许用户查询亚马逊数据库(使用亚马逊 ECS)。每次查询后,我的网站都会将输出中的前十项填充到表中。每个项目都有一个按钮,允许用户选择要出售的项目。我需要将这些参数显示在另一个视图中的表单中。这些参数最终会保存到我的数据库中。我不喜欢显示参数的原因是用户可以手动操作 URL。
-
看起来对用户隐藏参数并不能解决您的问题。恶意用户将始终能够找出参数并操纵它们。通过实施您的方法,您使代码更加复杂,但它实际上并没有以任何方式提高安全性
标签: ruby-on-rails link-to