Ruby on rails 3 在Rails 3中构造秘密链接
在我正在构建的rails应用程序中,我有一个名为Ruby on rails 3 在Rails 3中构造秘密链接,ruby-on-rails-3,url,routing,structure,private,Ruby On Rails 3,Url,Routing,Structure,Private,在我正在构建的rails应用程序中,我有一个名为bucket的资源 例如,我现在的任务是为这些桶创建秘密链接- http://myapp.dev/x/:secret_unique_hash_for_bucket_one/ -哪个映射到- http://myapp.dev/buckets/1 -而不公开实际的ID 我还需要此秘密链接上的所有操作和子资源才能工作,例如- http://myapp.dev/x/:secret_unique_hash_for_bucket_one/edit http
bucket
的资源
例如,我现在的任务是为这些桶创建秘密链接-
http://myapp.dev/x/:secret_unique_hash_for_bucket_one/
-哪个映射到-
http://myapp.dev/buckets/1
-而不公开实际的ID
我还需要此秘密链接上的所有操作和子资源才能工作,例如-
http://myapp.dev/x/:secret_unique_hash_for_bucket_one/edit
http://myapp.dev/x/:secret_unique_hash_for_bucket_one/ideas/1
最后,我还需要url帮助程序(edit\u bucket\u path
)来保持资源ID的机密性
一个最佳的结构是什么?当创建一个bucket时,您可以将bucket模型属性(或者只是其中的一部分,显然不仅仅是id)散列到SHA256中,并将其与模型一起保存。 然后在模型中,桶模型覆盖
to_param
方法
def to_param
self.hashed
end
然后,您的路由将使用哈希属性,而不是默认的id。值得注意的是,由于您正在存储哈希,因此哈希值无关紧要。因此,您应该使用随机数生成器,而不是(可猜测的)模型属性。