2010-02-02 7 views
5

Existe-t-il un moyen pour qu'Authlogic valide le format d'un mot de passe, par exemple doit contenir au moins une lettre et au moins un chiffre? L'omission d'une méthode validates_format_of_password_options à utiliser dans le bloc de configuration acts_as_authentic semble indiquer qu'Authlogic est d'avis que l'on ne devrait pas imposer une telle contrainte à ses utilisateurs.validation du format du mot de passe dans Authlogic

Je pensais que je voudrais simplement mettre dans une ActiveRecord normale validates_format_of :password, mais cela signifie qu'un objet current_user je construis est intrinsèquement invalide, car je ne peux pas récupérer le mot de passe en texte clair (et ne serait pas le ranger dans cet objet même si je pouvais!). En détectant que mon current_user est invalide, Rails ou Authlogic (je ne sais pas lequel, puisque je suis assez nouveau pour les deux) me dirige vers ma page «modifier l'utilisateur» avec une erreur de validation pour son mot de passe.

Répondre

2

Vous pouvez utiliser les options de configuration données par acts_as_authentic comme ceci:

# 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. 

Si vous allez aux modules dans le bijou que vous pouvez voir les options supplémentaires qu'ils fournissent. Par exemple, si je veux changer les options par défaut de la validation de la longueur du mot de passe:

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

Vous pouvez regarder dans le dossier acts_as_authentic dans votre répertoire « (GEMS || plugins)/authlogic/acts_as_authentic/» pour plus d'options. À votre santé!

+1

J'ai déjà 'merge_validates_length_of_password_field_options' dans mon bloc de configuration et cela fonctionne comme prévu. Mon problème est qu'aucune méthode similaire n'existe pour le format du champ de mot de passe comme il le fait pour les champs de connexion et d'email. – hynkle

+0

Vous pouvez toujours le monkeypatch. :-) – westoque

+0

Juste patché-assez court! Fonctionne parfaitement. – hynkle

7

ne nécessite pas de correction de singe, mais n'est pas lié à de futurs changements Authlogic. Il suffit de l'ajouter à votre modèle d'utilisateur:

validates_format_of: mot de passe,: avec =>/^ (?. = \ d) (?. = ([az] | [AZ])) ([\ x20- \ x7E]) {6,40} $ /,: if =>: require_password ?,: message => "doit inclure un chiffre, une lettre et être compris entre 6 et 40 caractères"

Bien sûr, vous pouvez modifier le regex pour répondre à vos besoins.

+0

a parfaitement fonctionné pour moi! – dalyons

+1

en fait, je devais le changer légèrement à: '/ ^(?=.*\d)(?=.*([az]|[AZ]))([\x20-\x7E]){6, } $/' – dalyons

Questions connexes