2011-01-27 7 views
1

アプリをアップロードする方法はありますか?あるいは特定のIPのセットによって公共アクセスをレールアプリに制限する方法

私たちは一般公開までにアプリを開く前にいくつかのプライベートオンラインテストを実行したいと考えています。これまでのところ、私は次のコードが出ている:

class ApplicationController < ActionController::Base 
    before_filter :restrict_access 

    def restrict_access 
    whitelist = ['127.0.0.123', '10.0.1.7', '10.0.1.8'].freeze 

    unless(whitelist.include? request.env['REMOTE_ADDR']) 
     render :file => "#{Rails.public_path}/500.html", :status => :unauthorized 
     return 
    end 
    end 
end 

しかし、上記のコードはまだロゴとフッターを公開する主なレイアウトファイル(アプリ/ビュー/レイアウト/ application.html.erb)をレンダリングします。許可されていないアクセスの場合は、「Ooopsのようなページを表示したい、我々はまだいくつかのテストを行っており、まもなく公開されるだろう!サイトのロゴはありません。何もありません。単純なメッセージです。

私たちは認証宝石としてdeviseを使用しています。プライベートベータテストのアクセスを制限するだけの認証機能を追加することは望ましくありません。代わりにIPでやりたい

このようなことは可能ですか?おそらく上記のコードは作業する必要があるでしょうか?または、この要件のためだけに使用できる宝石はありますか?

答えて

1

ApacheまたはNginxにデプロイする場合は、関連するサイト設定ファイルで設定するだけで十分です。その場合、アプリ自体にある必要はありません。

既存のコードの問題点は完全にはわかりません。フィルタが無視されている、またはファイルがレイアウト内でレンダリングされているようですか?後者の場合は、レンダリングオプションとして:layout => falseを指定する必要があります。

+0

にプレーンエラーMSGまたは何を置くことができます。私がサーバーの設定ファイルにアクセスできるかどうかはあまり確かではありません。しかし、:layout => falseはそれを行いました。ありがとう! –

+0

また、500の代わりに503のテンプレートをレンダリングする必要がありますか? –

+0

@Christian:これは単なる措置なので、どのエラーコードを使用するかについて心配する必要はありません。ただし、401エラーコード( ':unauthorized')を送信しているので、' 401.html'というファイルの名前を付けるのが適切かもしれません。 – Matchu

0

私はいくつかのラックのmiddelware a.e.を使用することを提案します。 rack-rewrite

require 'rack-rewrite' 

#in your environment 
    config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do 
     r301 %r{.*}, "YOUR REDIRECTPAGE$&" ,:if => Proc.new {|rack_env| 
       #puts here your conditions basing on rack_env 
     } 
    end 

0
class ApplicationController < ActionController::Base 
before_filter :check, :except=>:unauth 

def unauth 
    render(:layout=>false) 
end 

private 
    def check 
    whitelist = ['127.0.0.123', '10.0.1.7', '10.0.1.8'].freeze 
    if !(whitelist.include? request.env['REMOTE_ADDR']) 
     redirect_to('/unauth') 
     return 
    end 
    end 
end 

未テストをテストしていませんが、それを行う必要があり、今、あなたは私のウェブホストは、Herokuのあるunauth.rhtml

関連する問題