我正在尝试在Rails 2.3.4应用中使用authenticate_with_http_basic,并且没有提取用户名和密码。我做了一点侦探工作并发现它失败了,因为请求中没有授权标头。我尝试添加文档中建议的RewriteRule:
RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
但是,我没有运气,无论是Apache / Passenger还是Mongrel。我也没有运气在Rails 3应用程序中尝试authenticate_with_http_basic。如果我将其更改为authenticate_or_request_with_http_basic,则在提示符处给出的凭据有效,但它会忽略URL中提供的任何凭据。 (这是有道理的,因为它正在调用authenticate_with_http_basic。)我在代码中找不到应该弄乱请求的任何内容,而且我觉得它不适用于Mongrel本地工作。有什么建议吗?
答案 0 :(得分:3)
我强烈建议使用像Devise或Authlogic这样的身份验证gem /插件。它们都支持基本的HTTP身份验证。
设计:https://github.com/plataformatec/devise和 http://railscasts.com/episodes/209-introducing-devise
Authlogic:https://github.com/binarylogic/authlogic和 http://railscasts.com/episodes/160-authlogic
答案 1 :(得分:0)
对于任何未来的观众:如果看起来Rails收到的授权标题与您认为发送的不同,请检查以确保您没有使用.htaccess / .htpasswd文件。浏览器显然会记住凭据,它会覆盖您发送的任何内容!
花了3个小时试图解决这个问题。我当然希望它可以帮助其他人: - )