2010-02-02 21 views
5

Gibt es eine Möglichkeit, Authlogic dazu zu bringen, das Format eines Passworts zu überprüfen, zum Beispiel muss es mindestens einen Buchstaben und mindestens eine Nummer enthalten? Das Weglassen einer validates_format_of_password_options-Methode, die im Konfigurationsblock acts_as_authentic zu verwenden ist, scheint darauf hinzudeuten, dass Authlogic der Meinung ist, dass man seinen Benutzern keine solche Beschränkung auferlegen sollte.Passwort-Format in Authlogic validieren

Ich dachte, ich einfach in einem normalen Active validates_format_of :password setzen würde, aber dies bedeutet, dass ein current_user Objekt, das ich baue Natur ungültig ist, da ich nicht das Klartext-Passwort abrufen kann (und es nicht selbst in diesem Objekt wird die Speicherung würde wenn ich könnte!). Nachdem ich festgestellt habe, dass mein current_user ungültig ist, leiten Rails oder Authlogic (nicht sicher, was, da ich für beide relativ neu bin) mich mit einem Validierungsfehler für das Passwort auf meine Seite 'Benutzer bearbeiten'.

Antwort

2

Sie können die Konfigurationsoptionen von acts_as_authentic wie so gegeben verwenden:

# Configuration is easy: 
    # 
    # acts_as_authentic do |c| 
    #  c.my_configuration_option = my_value 
    # end 
    # 
    # See the various sub modules for the configuration they provide. 

Wenn Sie auf die Module in den Edelstein gehen, können Sie zusätzliche Optionen sehen sie bieten. Zum Beispiel, wenn ich will die Standardoptionen des Passworts Länge Validierung ändern:

acts_as_authentic do |c| 
c.merge_validates_length_of_password_field_options({:minimum => 3}) 
end 

Sie innerhalb des acts_as_authentic Ordner schauen in Ihrem „(Edelsteine ​​|| Plugins)/authlogic/acts_as_authentic /“ Verzeichnis für weitere Optionen. Prost!

+1

Ich habe bereits 'merge_validates_length_of_password_field_options' in meinem Config-Block und das funktioniert wie erwartet. Mein Problem ist, dass für das Format des Passwortfeldes keine ähnliche Methode wie für die Login- und E-Mail-Felder existiert. – hynkle

+0

Sie können immer monkeypatch es. :-) – westoque

+0

Just flickte es-ziemlich kurz! Funktioniert perfekt. – hynkle

7

erfordert keine Affe-patchen, aber nicht an zukünftige Änderungen Authlogic gebunden. fügen Sie diese einfach in Ihrem User-Modell:

validates_format_of: Passwort: mit =>/^ (?. = \ d) (?. = ([az] | [AZ])) ([\ x20- \ x7E]) {6,40} $ /,: if =>: require_password ?,: nachricht => "muss eine Zahl, einen Buchstaben und zwischen 6 und 40 Zeichen enthalten"

Natürlich können Sie die ändern Regex nach Ihren Bedürfnissen.

+0

hat perfekt für mich gearbeitet! – dalyons

+1

tatsächlich, ich musste es leicht ändern in: '/^(.*****)(?=.*([az]|[AZ]))([\x20-\x7E]){6, } $/' – dalyons