【问题标题】:How can I keep my Heroku application private?如何保持 Heroku 应用程序的私密性?
【发布时间】:2011-06-17 05:59:09
【问题描述】:

有没有一种方法可以让我的应用程序完全保密,并且只让开发人员可以访问?

当随机用户输入 URL 时,它应该是一个空白页面,但是当开发者输入 URL 时,他们应该能够访问应用程序。

【问题讨论】:

  • 如果有人从 Google 来到这里寻找 node.js,这里是 link

标签: authentication ruby-on-rails-3 heroku devise


【解决方案1】:

我的(也很便宜)解决方案(使用基于类的视图的 Django 应用程序)是在我所有基于类的视图中使用 SuperUserRequiredMixin,如下所示:

class BlogPostDetailView(SuperuserRequiredMixin, DetailView):
    template_name = "blogpost-detail.html"
    model = BlogPost

添加/删除这个 mixin 是我解决这个问题的方法。

【讨论】:

    【解决方案2】:

    我自己构建了rack_staging gem 来处理这个用例,它可能对你也有用。

    【讨论】:

      【解决方案3】:

      现在您还可以使用 Heroku add-on,让您指定允许访问应用程序的用户的电子邮件,并使用 Persona(又名 BrowserID)对用户进行身份验证(无需特定于站点的密码)。

      【讨论】:

      • 似乎现在欧洲也有售
      【解决方案4】:

      一个非常简单的解决方案是添加一个可以存储在用户机器上的 cookie 中的密钥。这不是一个完美的解决方案,因为有人可以获得密钥,但它可以为您提供基本的保护,防止有人绊倒您的网站。您可以使用http://www.yourdomain.com?access_key=random_string 之类的网址,然后将以下内容添加到您的应用程序控制器中。

      class ApplicationController < ActionController::Base
        before_filter :check_redirect_key
      
        def check_redirect_key
          if request[:access_key] != 'random_string' && cookies[:access_key] != 'random_string'
            redirect_to "/404.html" 
          elsif request[:access_key] == 'random_string'
            cookies.permanent[:access_key] = 'random_string'
          end
        end
      
      end
      

      此代码将检查用户计算机上的 url 或 cookie 中的访问密钥,如果它存在于任一位置,则让他们进入。这样,一旦他们使用密钥访问了该站点,他们就可以直接访问该 url。

      【讨论】:

      • 谢谢!这很好很简单,我将它应用到了一个sailsjs(节点)应用程序中,效果很好。
      【解决方案5】:

      查看 authlogic gem,尤其是单一访问令牌功能。

      您可以向未将适当的单一访问令牌作为参数传递的任何人返回 404。

      【讨论】:

        【解决方案6】:

        我的廉价解决方案是实现 before_filter 以在执行每个操作之前请求 HTTP 身份验证。

        此解决方案适用于其他身份验证层 - 设计或其他。

        USERS = { "user" => "secret" }
        
        before_filter :authenticate
        
        def authenticate
          authenticate_or_request_with_http_digest("Application") do |name|
            USERS[name]
          end
        end
        

        当其他对等方登陆 yourdomain.heroku.com 时,他们会被要求进行 HTTP 身份验证,稍后再进行其他身份验证(如果有)。

        【讨论】:

        【解决方案7】:

        您可以使用 HTTP 基本身份验证作为一种简单的方法:

        Is there a way to set up simple http authentication for an app on heroku?

        不完全是防弹的,但可能就足够了。

        您也可以尝试检查heroku_user,如果未设置则拒绝访问:

        http://blog.heroku.com/archives/2008/1/14/heroku_user/

        我在heroku_user 上找不到太多文档,所以我不知道它是否仍然受支持。

        【讨论】:

          猜你喜欢
          • 2011-11-30
          • 2012-08-19
          • 1970-01-01
          • 2012-01-30
          • 2015-03-04
          • 1970-01-01
          • 1970-01-01
          • 2017-05-16
          • 1970-01-01
          相关资源
          最近更新 更多