防止Ruby On Rails自动参数下放

时间:2014-03-10 18:37:28

标签: ruby-on-rails

我在Rails 3.2上遇到一个奇怪的问题,我无法确定。我正在混淆给定资源的参数以提供一些基本的访问安全性(这不是敏感数据,我们只是想确保访客用户故意到达某个地方而不能输入其他ID)。为此,我重载了我的某个模型的to_param方法。

def to_param
  encrypt id
end

encrypt方法返回Base64哈希值。示例:Xa_bVjBh1zZUQ2fqlNb4tA==

当我调用模型的路径助手时,URL会正确构造,但params[:id]request.url都会小写哈希值!正如您可能想象的那样,这会引起头痛。

上下文示例:

object.to_param # Xa_bVjBh1zZUQ2fqlNb4tA==

params[:id] # xa_bvjbh1zzuq2fqlnb4ta==

request.url # http://localhost:3000/objects/xa_bvjbh1zzuq2fqlnb4ta==

object_path(id: Object.last.to_param) # "/objects/Xa_bVjBh1zZUQ2fqlNb4tA=="

任何人都可以提供有关为何可能发生这种情况的见解吗?

1 个答案:

答案 0 :(得分:0)

可能需要检查并查看您团队中的其他人是否实现了自动将to_params下载的内容,以使网址不区分大小写。我觉得这不是默认行为。