开发者

Rails HTTP Basic Authentication Failure

I'm trying to use authenticate_with_http_basic in a Rails 2.3.4 app, and the username and password aren't being picked up. I did a little detective work and figured out that it's failing because there's no authorization header in the request. I tried adding the RewriteRule suggested in the docs:

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

I haven't had any luck, though, either with Apache/Passenger or Mongrel. I also didn't have any luck trying authenticate_with_http_basic in a Rails 3 app. If I change it to authenticate_or_request_with_http_basic, credentials given at the prompt work, but it ignores any supplied in the url. (Which makes sense, since it's calling authenticate_with_http_basic.) I can't find anything i开发者_JAVA技巧n my code that should be messing with the request, and it seems odd to me that it isn't working locally with Mongrel. Any suggestions?


I would strongly recommend using an authentication gem/plugin like Devise or Authlogic. They both support basic HTTP authentication.

Devise: https://github.com/plataformatec/devise and http://railscasts.com/episodes/209-introducing-devise

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


For any future viewers: if it appears that Rails is receiving something different for the Authorization header than you think you are sending, check to ensure you aren't using .htaccess/.htpasswd files. The browser apparently remembers the credentials and it overrides anything you send!

Just spent like 3 hours trying to figure this out. I sure hope it helps someone else down the line :-)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜