我在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=="
任何人都可以提供有关为何可能发生这种情况的见解吗?
答案 0 :(得分:0)
可能需要检查并查看您团队中的其他人是否实现了自动将to_params下载的内容,以使网址不区分大小写。我觉得这不是默认行为。