2010-12-13 50 views
2

我想在Rails 2.3.4應用程序中使用authenticate_with_http_basic,並且用戶名和密碼未被拾取。我做了一些小小的偵探工作,並發現它失敗了,因爲請求中沒有授權標頭。我嘗試添加的文檔建議重寫規則:Rails的HTTP基本身份驗證失敗

RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L] 

我沒有任何運氣,但是,無論是與阿帕奇/乘客或雜種。我也沒有嘗試在Rails 3應用程序中使用authenticate_with_http_basic。如果我將其更改爲authenticate_or_request_with_http_basic,則在提示符下提供的憑據可以工作,但會忽略URL中提供的任何憑據。 (這是有道理的,因爲它調用了authenticate_with_http_basic。)我在代碼中找不到任何應該干擾請求的任何內容,而且我覺得它在Mongrel本地不能工作。有什麼建議麼?

回答

3

我強烈建議使用像Devise或Authlogic這樣的認證gem/plugin。它們都支持基本的HTTP身份驗證。

設計:https://github.com/plataformatec/devisehttp://railscasts.com/episodes/209-introducing-devise

Authlogic:https://github.com/binarylogic/authlogichttp://railscasts.com/episodes/160-authlogic

+0

我使用的是Authlogic,但問題不在於如何認證用戶,而是爲什麼數據沒有通過。即使我可以找到不同的方法,我很好奇爲什麼authenticate_with_http_basic不起作用! – Nancy 2010-12-14 15:59:05

0

任何未來觀衆:如果它看起來Rails正在接收的東西Authorization頭比你認爲你不同的發送,檢查以確保您不使用.htaccess/.htpasswd文件。瀏覽器顯然會記住憑據,並且會覆蓋您發送的任何內容!

只花了3小時試圖弄清楚這一點。我當然希望它可以幫助別人下線:-)