Ruby on Rails私有链接共享:Google Docs Style

时间:2010-08-03 04:18:16

标签: ruby-on-rails ruby security privacy

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

就我而言:

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

但是,我想要一个特殊的场景,用户可以创建具有相同隐私设置的事件,并且可以通过电子邮件,脸书等方式与他或她的朋友分享特殊链接。用户不需要帐户(但需要制作一个帐户才能注册该活动)。这很重要,因为application_controller中还有一个:before_filter,用于确保用户已登录。

我想我可以在这里做一些路由...现在我只需要简单的/ events / 72设置。每个事件应该有两个不同的链接:一个正常的链接和一个“特殊代码”版本,它们可以绕过这两个:before_filter?

人们的想法是什么?

2 个答案:

答案 0 :(得分:6)

我同意David Lyod的回答(在另一个控制器中将这个问题分开)。

但是为了创建哈希,我强烈建议你用一些秘密短语来腌制哈希。

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

如果没有秘密短语的知识,就不可能计算哈希值并对其系统进行测试,直到它碰到现有的哈希值为止。 如果你正在处理敏感数据,你不应该懒惰。

干杯,

的Lukas

答案 1 :(得分:4)

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

像created_at + user_id这样简单的东西,可以创建一个唯一的引用。

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