2012-04-02 13 views
0

Ich möchte Kennwortrichtlinien implementieren, die mindestens 8 und alphanumerisch sein müssen. Die neuen und bestätigenden Felder werden nun überprüft. Diese Regeln sollten beim Erstellen einer neuen Instanz eines Benutzers und beim Ändern der Kennwortfunktionalität für den vorhandenen Benutzer ebenfalls angewendet werden. 1) Wenn es ein Grails-Plugin gibt, das dies tun kann. 2) hat Javascript-basierte Validierung eine gute Strategie, wenn nicht wie kann ich es manuell ohne ein Plugin tun. Vielen Dank im VorausImplementieren von Passwortregeln in Grails

Antwort

0

Was Ray vorgeschlagen hat, sollte funktionieren, weil es sich um benutzerdefinierte Validierungen handelt, und dies ist Teil von 1.3.7. (Es ist nur er bezieht sich auf die Dokumente von 2.0) Sie müssen nur alle Regeln in der benutzerdefinierten Validierung aufschreiben und bevor Ihr Objekt in der Datenbank beibehalten wird, wird es gegen alle diese Regeln validiert oder Sie können die Validierung aufrufen() Methode für jedes Objekt, um die Werte vor dem Speichern zu validieren.

Kommen zum zweiten Teil Ihrer Frage: Sollten Sie Javascript-Prüfungen für das gleiche haben.

Antwort ist Ja. Es ist immer gut, sowohl clientseitige als auch serverseitige Validierungen zu haben, da clientseitige Validierungen sicherstellen, dass die Benutzererfahrung besser ist und serverseitige Validierungen die Integrität Ihrer Daten aufrechterhalten. Obwohl die clientseitige Validierung auch die Integrität gewährleistet, da diese jedoch bestanden werden kann, sollten Sie sich nicht nur auf diese verlassen.

Hoffe, das hilft.

0

Ich kann mir zwei Möglichkeiten vorstellen, dies zu tun. @ ray-tayek nahm an, dass das Passwort als Domain-Klassenfeld gespeichert wird, aber das wäre nicht ausreichend privat: Das Passwort würde als reines Textdokument über das Netzwerk (sei es ein Intranet oder das Internet) gesendet und gespeichert werden die Datenbank in der gleichen Weise. Allerdings ist die ehemalige nicht wahr, wenn Sie HTTPS verwenden, so (anstelle einer benutzerdefinierten Validator verwenden) können Sie die matches Constraints verwenden können, die einen regulären Ausdruck (ungetestet) hat:

class User { 
    String username 
    String password 

    static constraints = { 
     username blank: false // whatever 
     password minLenght: 8, matches: /^[\d\p{L}]*$/ // Digits or any kind of letter 
    } 
} 

Wie auch immer, was würde ich Do ist die Validierung der Client-Seite mit JavaScript, wenn es korrekt ist, berechnen Sie einen Hash wie SHA-1 und senden Sie es an den Server. In diesem Fall brauchen Sie Server-Seite zu überprüfen ist, dass der Hash entspricht einer SHA-1-String, der leicht getan werden kann:

static constraints = { 
     // ... 
     passwordHash matches: /^\b[0-9a-f]{5,40}\b$/ 
    } 

Also, wenn der Benutzer die Anmeldung versucht, in Sie die überprüfen sollten, gespeicherte und gesendete Hashes gegeneinander, anstatt einfache Passwörter zu verwenden.