Das ist einfach seltsam.
Ich habe Rails 3 RC mit Devise installiert. Ich habe eine benutzerdefinierte Strategie definiert, um Kerberos für die Authentifizierung zu verwenden.
%Vor%Ich habe die Devise Warden Konfiguration wie folgt eingerichtet:
%Vor%Ich erhalte keine Fehler in meinem Protokoll. Alles scheint gut zu funktionieren. Wenn ich "billiges Debugging", also eine Menge puts-Anweisungen, hinzufüge, scheint es so zu sein, dass die: curb-Strategie die Standardeinstellung ist. Hier ist ein Beispielsatz von Protokollen von einem Anmeldeversuch:
%Vor%Der Kerberos-Code funktioniert in anderen Dingen auf demselben Rechner. Ich habe erwartet, dass es eine Reihe von Fehlern zeigt, wenn es ein Problem gibt, aber ich bekomme nichts. Gibt es eine gute Möglichkeit, Devise / Warden zu debuggen?
Falls jemand anderes auf dieses Problem stößt, glaube ich, dass das Problem darin besteht:
Nach Warden Strategies :
gültig?
Der gültige? Methode fungiert als Wächter für die Strategie. Es ist optional, eine gültige zu deklarieren? Methode, und wenn Sie es nicht deklarieren, wird die Strategie immer ausgeführt. Wenn Sie es jedoch deklarieren, wird die Strategie nur versucht, wenn #valid? wird als wahr ausgewertet.
Bei der obigen Strategie wird argumentiert, dass der Benutzer versucht, sich anzumelden, wenn entweder ein "Benutzername" oder ein "Kennwort" -Parameter vorhanden ist. Wenn es nur einen von ihnen gibt, wird der 'User.authenticate'-Aufruf fehlschlagen, aber es war immer noch die gewünschte (gültige) Strategie.
Also Ihre gültige Methode:
%Vor% Er gibt false zurück, so dass authenticate!
niemals aufgerufen wird. params
ist ein verschachtelter Hash, also sollte es params[:user][:username]
anstelle von params[:username]
sein.
Ändern Sie Ihre gültige Methode zu:
%Vor% gibt true zurück und bewirkt, dass die Methode authenticate!
aufgerufen wird.
Ich bin auf ein ähnliches Problem gestoßen. Nach einer kurzen Debugging-Sitzung habe ich den Grund herausgefunden. Mein Benutzer wurde nicht bestätigt, daher wurde er nach der ersten erfolgreichen Anmeldung mit meiner Strategie von einem der folgenden Module abgemeldet, was ein bestätigendes Modul ist :)
Übrigens, der einfachste Weg, um Rails-Anwendungen zu debuggen, ist der folgende Code:
%Vor%und dann rdebug -c vom Terminal.
Tags und Links ruby-on-rails devise kerberos