2016-06-18 37 views
0

如何將基本身份驗證添加到Rails網站的根目錄?在開發中,我希望它出現在localhost:3000;我能夠將基本身份驗證添加到適用於所有控制器方法的應用程序控制器;但是,我還想要爲網站的根目錄強制執行基本身份驗證(無需將根重定向到受保護的頁面)。向Rails默認網站的根目錄添加基本身份驗證

在application_controller.rb,我現在有以下幾點:

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

你是什麼意思「還想基本身份驗證強制爲網站的根」?您已將基本身份驗證添加到應用程序控制器,該應用程序控制器會將auth添加到整個網站 –

+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