2010-11-05 25 views
0

Je voulais récemment déployer mon application Rails sur heroku mais je voulais la protéger du monde extérieur jusqu'à ce que je l'ai testé sur l'heroku lui-même. Pour le protéger, j'ai utilisé authenticate_or_request_with_http_basic. Cependant, après avoir passé l'authentification de base et vouloir me connecter (système de connexion en utilisant authlogic), je trouve que authlogic ne se souvient pas d'une session (par exemple current_user == nil).La création de session authlogic échoue lorsqu'elle est utilisée en combinaison avec authenticate_or_request_with_http_basic

Sans l'authenticate_or_request_with_http_basic before_filter, les sessions authlogic fonctionnent correctement.

Est-ce que quelqu'un sait pourquoi c'est ainsi et comment faire fonctionner les deux?

Merci d'avance. PS: Pour être clair, mon but est pas pour pouvoir utiliser les utilisateurs authlogic avec authenticate_or_request_with_http_basic.

PPS: J'utilise Rails 3 et git: //github.com/odorcicd/authlogic.git

Répondre

6

Je vais avoir ce problème aussi! Je vais essayer de l'examiner pour voir si je peux trouver quoi que ce soit ...

EDIT: La solution est de désavouer auth de base HTTP sur votre session Authlogic ...

class UserSession < Authlogic::Session::Base 
    allow_http_basic_auth false 
end 

Je suis sûr que c'est un bug dans Authlogic. Le problème est cette méthode:

Authlogic::Session::HttpAuth::InstanceMethods#allow_http_basic_auth? 

qui retourne vrai lorsque HTTP de base est utilisé, même ailleurs dans votre application.

+0

Merci! J'ai essayé votre solution et cela a fonctionné comme un charme. Peut-être devrions-nous en effet soumettre un rapport de bogue. –

+0

Envoyé un problème https://github.com/binarylogic/authlogic/issues/issue/209 – mattwindwer

+0

Merci pour le partage! – Nycen