2010-12-13 15 views
2

Ich versuche authenticate_with_http_basic in einer Rails 2.3.4 App zu verwenden, und der Benutzername und das Passwort werden nicht abgeholt. Ich habe ein wenig Detektivarbeit gemacht und herausgefunden, dass es scheitert, weil es in der Anfrage keinen Autorisierungskopf gibt. Ich versuchte, die RewriteRule in der Dokumentation vorgeschlagen Zugabe:Rails HTTP Basic Authentifizierung Fehler

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

Ich habe kein Glück gehabt, aber entweder mit Apache/Passagiere oder Mongrel. Ich hatte auch kein Glück, authenticate_with_http_basic in einer Rails 3 App zu versuchen. Wenn ich es in authenticate_or_request_with_http_basic ändere, funktionieren die an der Eingabeaufforderung angegebenen Anmeldeinformationen, aber es ignoriert alle in der URL bereitgestellten. (Was sinnvoll ist, da es authenticate_with_http_basic aufruft.) Ich kann nichts in meinem Code finden, das mit der Anfrage in Konflikt geraten sollte, und es erscheint mir merkwürdig, dass es nicht lokal mit Mongrel funktioniert. Irgendwelche Vorschläge?

Antwort

3

Ich würde dringend empfehlen eine Authentifizierung Edelstein/Plugin wie Devise oder Authlogic. Beide unterstützen grundlegende HTTP-Authentifizierung.

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

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

+0

Ich benutze Authlogic, aber das Problem ist nicht so sehr, wie der Benutzer zu authentifizieren, aber warum die Daten nicht durchkommen. Und selbst wenn ich einen anderen Ansatz finde, bin ich neugierig, warum authenticate_with_http_basic nicht funktioniert! – Nancy

0

Für zukünftige Zuschauer: wenn es scheint, dass Rails etwas anderes für den Authorization-Header empfängt, als Sie denken Sie senden, Scheck um sicherzustellen, dass Sie keine .htaccess/.htpasswd-Dateien verwenden. Der Browser erinnert sich offenbar an die Anmeldeinformationen und überschreibt alles, was Sie senden!

Ich habe gerade 3 Stunden damit verbracht, das herauszufinden. Ich hoffe, es hilft jemand anderem auf der ganzen Linie :-)

Verwandte Themen