【问题标题】:Ruby on Rails private link sharing: Google Docs StyleRuby on Rails 私有链接共享:Google Docs Style
【发布时间】:2011-03-24 12:59:09
【问题描述】:

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

就我而言:

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

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

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

人们的想法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby security privacy


    【解决方案1】:

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

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

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

    这样做是不可能的,如果没有秘密短语的知识,就不可能计算哈希值并在你的系统上测试它们,直到它达到现有的哈希值。 如果您正在处理敏感数据,您不应该偷懒。

    干杯,

    卢卡斯

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 谢谢!我要试试看。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 2013-05-06
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多