2010-12-13 52 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小时试图弄清楚这一点。我当然希望它可以帮助别人下线:-)