внедрение правил паролей в Grails - PullRequest
0 голосов
/ 03 апреля 2012

Я хочу реализовать правила для паролей, которые должны иметь минимальную длину 8 и буквенно-цифровые символы.Новые поля и поля подтверждения теперь проверяются. Эти правила должны применяться при создании нового экземпляра пользователя, а также изменять функциональность пароля для существующего пользователя.1) Если есть плагин Grails, который может это сделать.2) имеет хорошую стратегию проверки на основе JavaScript, если нет, то как я могу сделать это вручную без плагина.Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 03 апреля 2012

То, что Рэй предложил, должно работать, потому что он ссылается на пользовательские проверки, и это тоже часть 1.3.7.(Просто он ссылается на документы 2.0). Вам просто нужно записать все правила в пользовательской проверке, и прежде чем ваш объект будет сохранен в базе данных, он будет проверен на соответствие всем этим правилам, или вы можете вызвать проверку() метод объекта в любое время для проверки значений перед сохранением.

Переходя ко второй части вашего вопроса: Если у вас есть javascript проверяет на то же самое.

Ответ - Да.Всегда полезно иметь на стороне клиента и на стороне сервера проверки, так как проверки на стороне клиента обеспечат лучшее взаимодействие с пользователем, а проверки на стороне сервера сохранят целостность ваших данных.Хотя проверка на стороне клиента также обеспечит целостность, но так как ее можно пропустить, вам не следует полагаться только на них.

Надеюсь, это поможет.

0 голосов
/ 03 апреля 2012

Я могу придумать два способа сделать это. @ ray-tayek предполагал, что пароль хранится как поле класса Домена, но это не будет достаточно частным: пароль будет отправлен по сети (будь то интрасеть или Интернет) в виде простого текста и будет сохранен в база данных таким же образом. Однако первое неверно, если вы используете HTTPS, поэтому (вместо использования пользовательского валидатора) вы можете использовать ограничения matches, которые принимают регулярное выражение (непроверенное):

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
    }
}

В любом случае, я хотел бы проверить клиентскую часть пароля с помощью JavaScript, когда он правильно вычислит хеш, такой как SHA-1 , и отправит его на сервер. В этом случае все, что вам нужно проверить на стороне сервера, - это то, что хеш соответствует строке SHA-1, что может быть легко сделано:

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

Таким образом, когда пользователь пытается войти в систему, вы должны проверять сохраненные и отправленные хэши друг против друга, вместо использования простых паролей.

0 голосов
/ 03 апреля 2012

используйте http://grails.org/doc/2.0.x/ref/Constraints/validator.html в ограничении для пароля.

...