6

让用户能够共享一个私人链接的最佳方式是什么,让任何点击它的人都可以查看具有隐私限制的特定页面/文档/项目?

就我而言:

用户创建的事件仅限于数据库中的某些关系组(即:朋友、朋友的朋友等)。我在事件控制器中有一个:before_filter来检查当前登录用户的资格,以确保该用户有权查看该事件。如果他们不这样做,他们会被引导到带有错误消息的根页面。

但是,我希望存在一个特殊的场景,用户可以使用相同的隐私设置创建一个事件,此外,能够通过电子邮件、Facebook 等与他或她的朋友分享一个特殊链接。这些用户不会需要一个帐户(但需要创建一个帐户才能注册该活动)。这很重要,因为在 application_controller 中还有一个 :before_filter 可以确保用户已登录。

我在想我可以用路由在这里做些什么......现在我只有简单的 /events/72 设置。每个事件是否应该有两个不同的链接:一个正常的链接,以及一个“特殊代码”版本,使他们能够绕过这两个:before_filter?

人们的想法是什么?

4

2 回答 2

6

我同意 David Lyod 的回答(在不同的控制器中分离这个问题)。

但是为了创建散列,我强烈建议你用一些秘密短语对散列进行盐分。

require "digest"
Digest::SHA512.hexdigest("#{created_at}#{user_id}.mysupersonicsecretSALT")

这样做是不可能的,没有秘密短语的知识,计算散列并针对您的系统进行测试,直到它达到现有的。如果你正在处理敏感数据,你不应该偷懒。

干杯,

卢卡斯

于 2010-08-03T19:22:35.837 回答
4

我会有一个单独的控制器,它使用哈希值来引用事件。

像 created_at + user_id 这样简单的东西散列来创建一个唯一的引用。

您也可以简单地跳过对某个操作的检查,但我更喜欢第一个解决方案。

于 2010-08-03T05:20:43.693 回答