Rails:隐藏URL中的参数

时间:2013-04-11 09:13:05

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

为了回复从用户A收到的消息,我通过link_to标签传递用户A的id

<%= link_to "Reply", new_message_path(:id => @user.id), class: "button" %>

然后我可以确保收件人是@user。但问题是,当新视图以发送消息形式打开时,URL也具有用户A的ID。我怎么能隐藏它?因为有人可以轻松更改参数,然后可以将消息发送给另一个用户而不是用户A.

3 个答案:

答案 0 :(得分:2)

如果您需要id,则需要以某种方式发送参数。你不能也可能不想隐藏它。

如果有人更改了网址以将信息发送给其他用户,他会自愿这样做。

如果您想确保用户只能向某些用户发送消息,您应该通过设置权限来实现。

隐藏参数不会获得任何好处。

答案 1 :(得分:1)

你不能。

我的意思是你可以隐藏它并使用POST方法和id的隐藏字段,但风险是相同的:任何人都可以更改id。

您需要问自己“如何保护我的消息系统,以便用户无法向其他用户发送消息”这一问题。我建议在您的消息中创建一个令牌字段(如长随机字符串),并使用此令牌验证消息是否已发送给正确的用户。它需要一些编码,但是你的应用程序需要安全性,你无法避免它

答案 2 :(得分:0)

使用这种语法你还有这个麻烦吗?

<%= link_to "Reply", new_message_path(@user), class: "button" %>

控制器操作中的哪些代码“创建”?