2010-12-13 26 views
2

J'essaie d'utiliser authenticate_with_http_basic dans une application Rails 2.3.4, et le nom d'utilisateur et le mot de passe ne sont pas récupérés. J'ai fait un petit travail de détective et j'ai compris que ça échouait parce qu'il n'y avait pas d'en-tête d'autorisation dans la requête. J'ai essayé d'ajouter le RewriteRule suggéré dans la documentation:Rails Échec de l'authentification HTTP de base

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

Je n'ai pas eu de chance, mais, que ce soit avec Apache/passager ou Mongrel. Je n'ai pas non plus eu de chance d'essayer authenticate_with_http_basic dans une application Rails 3. Si je le change en authenticate_or_request_with_http_basic, les informations d'identification fournies lors de l'invite fonctionnent, mais elle ignore les informations fournies dans l'URL. (Ce qui est logique, car il appelle authenticate_with_http_basic.) Je ne trouve rien dans mon code qui devrait perturber la requête, et il me semble étrange qu'il ne fonctionne pas localement avec Mongrel. Aucune suggestion?

Répondre

3

Je recommande fortement d'utiliser un gem/plugin d'authentification comme Devise ou Authlogic. Ils prennent tous deux en charge l'authentification HTTP de base.

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

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

+0

J'utilise Authlogic, mais le problème n'est pas tellement de savoir comment authentifier l'utilisateur mais pourquoi les données ne sont pas transmises. Et même si je peux trouver une approche différente, je suis curieux de savoir pourquoi authenticate_with_http_basic ne fonctionne pas! – Nancy

0

Pour les futurs spectateurs: s'il semble que Rails est de recevoir quelque chose de différent pour l'en-tête d'autorisation que vous pensez que vous envoyez, chèque pour vous assurer que vous n'utilisez pas les fichiers .htaccess/.htpasswd. Le navigateur se souvient apparemment des informations d'identification et il remplace tout ce que vous envoyez! Je viens de passer 3 heures à essayer de comprendre cela. J'espere que cela aidera quelqu'un d'autre sur la ligne :-)