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

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

就我而言:

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

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

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

人们的想法是什么?

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

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

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

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

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

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

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

干杯,

卢卡斯