2010-02-02 14 views
5

¿Hay alguna forma de que Authlogic valide el formato de una contraseña, por ejemplo, debe contener al menos una letra y al menos un número? La omisión de un método validates_format_of_password_options que se utilizará en el bloque de configuración acts_as_authentic parece indicar que Authlogic tiene la opinión de que no se debe imponer tal restricción a los usuarios.validación de formato de contraseña en Authlogic

pensé que iba a poner simplemente en un ActiveRecord normal de validates_format_of :password, pero esto significa que un objeto current_user edifico es de por sí no es válida, ya que no puedo recuperar la contraseña en texto plano (y no sería almacenarlo en ese objeto incluso ¡si pudiera!). Al detectar que mi current_user no es válido, Rails o Authlogic (no estoy seguro de cuál, ya que soy bastante nuevo para ambos) me dirige a mi página 'editar usuario' con un error de validación para su contraseña.

Respuesta

2

Puede utilizar las opciones de configuración dadas por acts_as_authentic así:

# 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 usted va a los módulos de la gema se puede ver opciones adicionales que proporcionan. Por ejemplo, si quiero cambiar las opciones predeterminadas de validación de la longitud de la contraseña:

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

Usted puede mirar dentro de la carpeta acts_as_authentic en sus "(GEMS || plugins)/authlogic acts_as_authentic//" directorio para más opciones. ¡Aclamaciones!

+1

Ya tengo 'merge_validates_length_of_password_field_options' en mi bloque de configuración y eso funciona como se esperaba. Mi problema es que no existe un método similar para el formato del campo de contraseña, como ocurre con los campos de inicio de sesión y correo electrónico. – hynkle

+0

Siempre se puede parchear. :-) – westoque

+0

Acabo de parchearlo, ¡bastante corto! Funciona perfectamente. – hynkle

7

no requiere ningún parche, pero no está vinculado a ningún futuro Authlogic changes. Sólo tiene que añadir esto a su modelo de usuario:

validates_format_of: contraseña,: con =>/^ (?. = \ d) (?. = ([az] | [AZ])) ([\ x20- \ x7E]) {6,40} $ /,: if =>: require_password?: message => "debe incluir un número, una letra y tener entre 6 y 40 caracteres"

Por supuesto, puede modificar el Regex para satisfacer sus necesidades.

+0

funcionó perfectamente para mí! – dalyons

+1

en realidad, tuve que cambiarlo ligeramente a: '/^(?=.*\d)(?=.*([az]|[AZ]))([\x20-\x7E]){6, } $/' – dalyons

Cuestiones relacionadas