web-dev-qa-db-ja.com

Herokuアプリケーションを非公開にするにはどうすればよいですか?

アプリケーションを完全にプライベートに保ち、開発者だけにアクセスを許可する方法はありますか?

ランダムなユーザーがURLを入力すると、空白のページのようになりますが、開発者がURLを入力すると、アプリにアクセスできるようになります。

25
felix

私の安価な解決策は、すべてのアクションが実行される前にHTTP認証を要求するbefore_filterを実装することでした。

このソリューションは、他の認証レイヤー(Deviseなど)でもうまく機能します。

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認証を求められ、後で他の認証が行われている場合は求められます。

16
lbz

Herokuアドオン を使用して、アプリケーションへのアクセスを許可するユーザーの電子メールを指定し、Persona(別名BrowserID)を使用してユーザーを認証できるようになりました(サイト固有のパスワードは必要ありません)。

6
Jan Wrobel

本当に簡単な解決策は、ユーザーのマシンのCookieに保存できるキーを追加することです。誰かが鍵を入手する可能性があるため、これは完璧なソリューションではありませんが、サイトを偶然見つけた人からの基本的な保護を提供します。 http://www.yourdomain.com?access_key=random_string のような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

このコードは、ユーザーのマシンのURLまたはCookieのいずれかでアクセスキーをチェックし、どちらかの場所に存在する場合はそれらを許可します。そうすれば、キーを使用してサイトにアクセスすると、URLに直接アクセスできます。

2
Braden Becker

Authlogic gem、特にシングルアクセストークン機能を確認してください。

適切なシングルアクセストークンを引数として渡さない人には、404を返すことができます。

0
Steve Wilhelm

私の(これも安価な)ソリューション(クラスベースのビューを使用するDjangoアプリ)は、次のようにすべてのクラスベースのビューでSuperUserRequiredMixinを使用することです。

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

このミックスインを追加/削除するのが私のやり方です。

0
pkaramol

このユースケースを自分で処理するために rack_staging gemを作成しました。これは、あなたにも役立つかもしれません。

0
Glenn Gillen