0

为了答复从用户A接收到的消息,我想过去在用户A的id通过的link_to标签:的Rails:隐藏Paramater在URL

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

然后我就可以确保收件人是@用户。但问题是,当新的视图以发送消息的形式打开时,该URL也具有用户A的ID。我怎样才能隐藏它?因为有人可以轻松更改参数,如果你需要的ID的消息随后被发送给其他用户,而不是用户A.

+1

您可以使用自定义固定链接,你可以通过“永久”这样做,用户有一个自定义固定链接,固定链接可以生成MD5或其他 – 2013-04-11 09:26:16

回答

2

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

如果有人改变了URL将消息发送给其他用户,他这样做心甘情愿。

如果你想确保用户只能将消息发送到特定的用户,你应该通过设置权限这样做。

隐藏参数不会为您带来任何收益。

+0

好的,我确实实现了一个before_filter,以便用户只能发送消息给某些用户,它确实解决了我的问题。我只是想知道是否可以隐藏参数以获得额外的安全性。我猜这不重要。谢谢。 – pratski 2013-04-11 09:22:55

+0

你可以像@Benjamin Sinclaire提到的那样,使用post方法,但我不会为此而烦恼。它不会提供任何额外的安全性,但会阻止参数在url中显示。 – Arjan 2013-04-11 09:34:30

0

有了这个语法,你仍然有这个麻烦?

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

你的控制器动作'create'中的代码是什么?

1

你不能。

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

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