2010-02-02 21 views
5

C'è un modo per far sì che Authlogic convalidi il formato di una password, ad esempio deve contenere almeno una lettera e almeno un numero? L'omissione di un metodo validates_format_of_password_options da utilizzare nel blocco di configurazione acts_as_authentic sembra indicare che Authlogic è dell'opinione che non si debba imporre un tale vincolo agli utenti.convalida formato password in Authlogic

ho pensato di mettere semplicemente in un normale ActiveRecord validates_format_of :password, ma questo significa che un oggetto current_user costruisco è intrinsecamente valido, come non riesco a recuperare la password in chiaro (e non sarebbe la memorizzazione in quell'oggetto anche se potessi!). Dopo aver rilevato che il mio current_user non è valido, Rails o Authlogic (non sono sicuro quale, dato che sono abbastanza nuovo per entrambi), mi indirizza alla mia pagina "modifica utente" con un errore di convalida per la sua password.

risposta

2

È possibile utilizzare le opzioni di configurazione fornite dal acts_as_authentic in questo modo:

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

Se si va ai moduli della gemma si può vedere le opzioni aggiuntive che forniscono. Per esempio se voglio cambiare le opzioni predefinite della convalida la lunghezza del password: "//(gemme || plugins)/Authlogic acts_as_authentic" directory

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

Potete guardare dentro la cartella acts_as_authentic nei tuoi per ulteriori opzioni. Saluti!

+1

Ho già un 'merge_validates_length_of_password_field_options' nel mio blocco di configurazione e funziona come previsto. Il mio problema è che non esiste un metodo simile per il formato del campo password come avviene per i campi di login e di posta elettronica. – hynkle

+0

Puoi sempre tenerlo a mente. :-) – westoque

+0

L'ho appena patchato: molto breve! Funziona perfettamente. – hynkle

7

non richiede patch per le scimmie, ma non è legato a nessuna modifica futura di Authlogic. Basta aggiungere questo al vostro modello User:

validates_format_of: password: con =>/^ (?. = \ d) (?. = ([az] | [AZ])) ([\ x20- \ x7E]) {6,40} $ /,: if =>: require_password ?,: message => "deve includere un numero, una lettera e avere tra 6 e 40 caratteri"

Ovviamente è possibile modificare il regex per soddisfare le tue esigenze.

+0

ha funzionato perfettamente per me! – dalyons

+1

effettivamente, ho dovuto cambiare leggermente a: '/^(?=.*\d)(?=.*([az]|[AZ]))([\x20-\x7E]){6, } $/' – dalyons