【发布时间】:2012-03-01 13:20:16
【问题描述】:
要在我的控制器中获取某个帖子,您可以在 URL 中输入类似这样的内容
http://0.0.0.0:3000/post/1
http://0.0.0.0:3000/post/2
http://0.0.0.0:3000/post/3
我被要求制作它,以便无法以这种方式获取它,而是使用随机字符串。例如更像这样的东西:
http://0.0.0.0:3000/post/wr4t-d2e2-1ee3
http://0.0.0.0:3000/post/prst-3r4t-1r1r
http://0.0.0.0:3000/post/asdo-2e12-sxas
问题 为了做到这一点,我应该在帖子表中创建另一个名为“token”或“random”的列,并通过 find_by 使用该列来获取帖子吗?即 Post.find_by_token('wr4t-d2e2-1ee3')
关于如何处理此问题的正确方法的任何意见。 我一直在阅读应用程序将使用 '代理键'、'guid'、'自然键'、令牌的示例、随机
我只是对最佳实践有点不知所措。
【问题讨论】:
-
我认为对于使用什么的最佳实践没有明确的答案。就我个人而言,我会寻找与您所服务的内容相关的内容:UPC、Isbn、带下划线的博客文章标题等。重要的是索引该列。其他人做有效的事。
-
让我猜,你有一个多租户系统,不希望用户看到其他租户通过 id 发布的帖子
-
是的,客户不希望帖子如此易于访问和可预测。 (即 1、2、3、4、5)按逻辑顺序排列。
-
如果是多租户,仅更改 URL 不应让任何随机人员访问其他租户的数据。 (如果它是多租户的,那么标记它。多租户数据库可能很棘手。)
标签: ruby-on-rails model-view-controller database-design primary-key