Authentication 如何将Heroku应用程序保密?

Authentication 如何将Heroku应用程序保密?,authentication,ruby-on-rails-3,heroku,devise,Authentication,Ruby On Rails 3,Heroku,Devise,有没有一种方法可以让我的应用程序完全私有化,并且只允许开发人员访问 当随机用户输入URL时,它应该类似于空白页,但当开发人员输入URL时,他们应该能够访问应用程序。您可以使用HTTP基本身份验证作为一种简单的方法: 不完全是防弹的,但可能足够了 您还可以尝试检查heroku_用户,如果未设置,则拒绝访问: 我找不到多少关于heroku用户的文档,所以我不知道它是否仍然受支持。我的廉价解决方案是实现一个before\u过滤器,在执行每个操作之前请求HTTP身份验证 此解决方案在其他身份验证层(

有没有一种方法可以让我的应用程序完全私有化,并且只允许开发人员访问


当随机用户输入URL时,它应该类似于空白页,但当开发人员输入URL时,他们应该能够访问应用程序。

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

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

您还可以尝试检查heroku_用户,如果未设置,则拒绝访问:


我找不到多少关于heroku用户的文档,所以我不知道它是否仍然受支持。

我的廉价解决方案是实现一个before\u过滤器,在执行每个操作之前请求HTTP身份验证

此解决方案在其他身份验证层(Desive或其他)上运行良好

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身份验证,稍后再进行其他身份验证(如果有)。

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


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

一个真正简单的解决方案是只添加一个密钥,该密钥可以存储在用户计算机上的cookie中。这不是一个完美的解决方案,因为有人可以获得密钥,但它可以为您提供基本的保护,防止有人在您的网站上绊倒。您可以使用类似的url,然后将以下内容添加到应用程序控制器中

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
class ApplicationController
此代码将在用户计算机上的url或cookie中检查访问密钥,并允许他们在任何位置都存在访问密钥。这样一来,一旦他们使用密钥访问了站点,他们就可以直接访问url。

现在,您还可以使用一个浏览器,让您指定允许访问应用程序的用户的电子邮件,并使用Persona(又名BrowserID)对用户进行身份验证(不需要站点特定的密码)。

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

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

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

添加/删除此mixin是我的方法。

最好将用户名和密码存储为Heroku配置变量()和哈希(),尽管只有在Rails.env==“production”时才应该进行身份验证。我可以在AngularJS应用程序(angular fullstack generator)中使用此方法吗?如果是这样的话,我应该在哪里添加这段代码,以便将其推送到Heroku?Rails 4具有上述内置功能:如果有人从Google来这里寻找node.js,那么这里有一个感谢!这很简单,我把它应用到一个sailsjs(node)应用程序中,效果很好。看起来它现在也在欧洲上市了