2011-01-28 10 views
21

私のアプリケーションを完全に非公開にして、開発者がアクセスできるようにする方法はありますか?Herokuアプリケーションを非公開にするにはどうすればよいですか?

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

+1

誰かがnode.jsを探してGoogleから来た場合、ここに[link](http://blog.modulus.io/nodejs-and-express-basic-authentication) – funroll

答えて

16

私の格安ソリューションでは、すべてのアクションが実行される前に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認証を求めています。

+0

があります。ユーザー名とパスワードを保存する方が良いですHeroku構成変数(http://blog.heroku.com/archives/2009/4/7/config-vars)とハッシュ(http://zacharyfox.com/blog/ruby-on-rails/password-hashing)として、ただし、Rails.env == 'production'の場合にのみ認証が行われます。 – avalez

+0

これをAngularJSアプリ(角型のフルスタックジェネレータ)で使用できますか?もしそうなら、私は実際にこのコードを追加してHerokuにプッシュしますか? – LifeOnLars

+0

Rails 4には上記の組み込み関数があります:http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic.html –

1

あなたは簡単な方法として、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に多くのドキュメントを見つけることができません依然としてサポートされています。

0

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

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

2

本当に簡単な解決策は、ユーザーのマシン上の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に直接アクセスすることができます。

+0

ありがとう!これは素敵でシンプルだったので、私はsailsjs(ノード)アプリにそれを適用し、それはきれいに働いた。 –

4

これで、アプリケーションにアクセスできるユーザーの電子メールを指定し、Persona(BrowserIDとも呼ばれます)を使用してユーザーを認証します(サイト固有のパスワードは必要ありません)。

+0

米国地域でのみご利用いただけます... – Imanol

0

私はこのユースケースを自分で処理するためにrack_stagingの宝石を作りましたが、それはあなたにとっても役に立つかもしれません。

0

私(また、安い)ソリューション(クラスベースのビューを使用してDjangoのアプリ)は、このようにすべての私のクラスベースのビューでSuperUserRequiredMixinを使用することです:

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

はこのミックスインを削除/追加について移動する私の方法でありますこの。

関連する問題