2016-06-18 13 views
0

どのようにして基本認証をレールウェブサイトのルートに追加できますか? devで、私はこれをlocalhost:3000に表示したいと思います。すべてのコントローラメソッドで動作するアプリケーションコントローラに基本認証を追加できました。しかし、私は基本的な認証をウェブサイトのルートに対して(保護されたページにルートをリダイレクトせずに)強制することも望みます。 application_controller.rbでrailsのルートに基本認証を追加するデフォルトのウェブサイト

、私は現在、次のようにあります

class ApplicationController < ActionController::Base 
    http_basic_authenticate_with name: ENV["USER_NAME"], password: ENV["PASSWORD"] if ENV["USER_NAME"].present? 


    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 
end 
+0

「基本認証がウェブサイトのルートに適用されますか?」とはどういう意味ですか?既に基本認証をアプリケーションコントローラに追加しました。これによりウェブサイト全体に認証が追加されます。 –

+0

動作しません。コントローラのメソッドだけを保護します。ルート以外の場合は、 – user1322092

+0

が動作しますが、なぜ動作していないのかわかりません。 – Saad

答えて

0

私はあなたがあなたのroutes.rbをファイルに設定されたルートを持っていない推測しています。あなたのルートファイルにこれを追加してみて、すべてのパスで認証を取得します。

root "your_controller#some_action" 

あなたはここでそれについての詳細を読むことができます:http://docs.railsbridge.org/intro-to-rails/setting_the_default_page

+0

あなたは正しいですが、私の問題は解決しません。私は保護しようとしているページに人をリダイレクトしたくない(セキュリティ設定からあいまいさを取り除く)。 – user1322092

+0

アプリケーションコントローラに認証設定があり、コントローラを最初に起動する必要があります。コントローラを経由せずに認証をしたい場合は、別のタイプの認証を使用する必要があります。 –

+0

@ user1322092、あなたのルートファイルにrootを使用すると、urlバーのパスはlocalhost:3000 /になります。これはあなたがプライベートにしたいパスを明らかにしません –

0

あなたが言ったように:

私は、すべてのコントローラのメソッドのために働くのアプリケーションコントローラに基本認証を追加することができました。

私はあなたがルートパスへのコントローラ#メソッドルートを持っているのではないかと疑います。したがって、localhost:3000にリクエストを送信すると、何も動作しません。この場合、基本認証では何も処理されません。

+0

あなたは正しいですが、問題。私は保護しようとしているページにリダイレクトしたくない(サ​​イト上の1ページのみ)。はい、私はダミーのページを作成することができます...まだ可能かどうかを見たいと思っています。 – user1322092

関連する問題