2010-10-05 3 views
0

Je voudrais appliquer une politique de mot de passe dans Zotonic. Ma première impression serait de le faire en tant que validateur sur le champ new_password dans l'éditeur d'identité.Comment appliquer des règles de complexité de mot de passe dans Zotonic?

Voici un exemple de politique:

  • Avoir au moins 8 caractères
  • ont au moins une lettre majuscule
  • Avoir au moins une lettre minuscule
  • Avoir au moins un numéro
  • Avoir au moins un caractère non alphanumérique
  • Ne pas être basé sur le nom de compte

Voici une implémentation possible (non testé):

string:length(Password) >= 8 andalso 
re:run(Password, "[A-Z]") =/= nomatch andalso 
re:run(Password, "[a-z]") =/= nomatch andalso 
re:run(Password, "[0-9]") =/= nomatch andalso 
re:run(Password, "[^A-Za-z0-9]") =/= nomatch andalso 
re:run(Password, AccountName) =:= nomatch 

Comment appliquer-vous des règles de complexité des mots de passe dans Zotonic?

Répondre

1

Ce que vous pouvez faire est de l'implémenter en tant que validation de formulaire. Le long des lignes des autres validations.

Je me demandais s'il y a un javascript disponible qui montre la force du mot de passe. (Comme un feu de circulation, vert ok, rouge vraiment pas ok.)

La validation peut être jointe en utilisant le {% validate %} scomp.

Une simple vérification de mot de passe peut être fait en faisant une seule expression régulière et l'attacher au champ de mot de passe à l'aide du format validateur http://zotonic.com/documentation/634/format

Pour votre fonction proposée, ou une fonctionnalité « feux de circulation », il pourrait être préférable faire un validateur personnalisé. Ou que nous ajoutons un support pour le validateur personnalisé de LiveValidation, auquel vous passez ensuite une fonction Javascript pour le contrôle.

+0

Il y a quelques contrôleurs de mot de passe JavaScript j'ai trouvé sans sortie graphique. http://www.geekwisdom.com/dyn/passwdmeter est le meilleur de ceux. L'utilisation de sa sortie pour piloter un compteur de qualité graphique devrait être simple. Je vais prendre une fissure maintenant. –

+0

http://phiras.wordpress.com/2009/07/29/password-strength-meter-v-2/ est bien meilleur et basé sur JQuery. –

0

Mon collègue m'a souligné:

^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$ 

Une explication complète est disponible auprès de l'auteur d'origine à http://davidhayden.com/blog/dave/archive/2004/09/25/501.aspx.

Il a un léger bug lorsqu'il est utilisé dans Zotonic (probablement en raison de bizarreries dans le module re) alors j'ai changé le \d-[0-9] et réduit la longueur requise à 8:

^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$ 

Il peut être appliqué dans _action_dialog_set_username_password.tpl en remplaçant la présence validateur:

{% validate id="new_password" type={presence} %} 

avec un format de validateur comme Marc W décrit How do you enforce password complexity rules in Zotonic?:

{% validate id="new_password" type={format pattern="^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$"} %} 
Questions connexes