У меня есть класс домена, который содержит пароль & поля password_confirm. Эти два проверяются отдельно. Какова наилучшая практика для создания проверки того, что эти два равны?Каков наилучший способ проверки пароля и подтверждения пароля в grails?
ответ
class User {
String password
String passwordConfirm
static constraints = {
password blank: false, nullable: false, minSize: 8, maxSize: 64, validator: {password, obj ->
def password2 = obj.passwordConfirm
password2 == password ? true : ['invalid.matchingpasswords']
}
}
}
Затем добавьте следующую строку в файл messages.properties ...
User.password.invalid.matchingpasswords=Passwords do not match
Когда user.save() или user.validate() вызывается, это вызовет автоматически.
Предлагаю вам использовать плагин безопасности для Grails, возможно, Shiro или Spring Security Core.
documentation В Спринг безопасности Ядра есть пример изменения пароля:
def updatePassword = {
String username = session['SPRING_SECURITY_LAST_USERNAME']
if (!username) {
flash.message = 'Sorry, an error has occurred'
redirect controller: 'login', action: 'auth'
return
}
String password = params.password
String newPassword = params.password_new
String newPassword2 = params.password_new_2
if (!password || !newPassword || !newPassword2 || newPassword != newPassword2) {
flash.message = 'Please enter your current password and a valid new password'
render view: 'passwordExpired', model: [username: session['SPRING_SECURITY_LAST_USERNAME']]
return
}
User user = User.findByUsername(username)
if (!passwordEncoder.isPasswordValid(user.password, password, null /*salt*/)) {
flash.message = 'Current password is incorrect'
render view: 'passwordExpired', model: [username: session['SPRING_SECURITY_LAST_USERNAME']]
return
}
if (passwordEncoder.isPasswordValid(user.password, newPassword, null /*salt*/)) {
flash.message = 'Please choose a different password from your current one'
render view: 'passwordExpired', model: [username: session['SPRING_SECURITY_LAST_USERNAME']]
return
}
user.password = newPassword
user.passwordExpired = false
user.save() // if you have password constraints check them here
redirect controller: 'login', action: 'auth'
}
Спасибо за ваш ответ. Мне не нужно использовать объект команды для проверки? – user2985824
Рекомендуется использовать объект команды. Вы можете адаптировать этот код к [валидатору] (http://grails.org/doc/latest/ref/Constraints/validator.html) –
Предположим, у меня есть класс домена пользователя и класс UserCommand. Итак, когда пользователь регистрируется на веб-сайте, есть два шага для проверки данных: Проверка ограничений UserCommand. Объект пользовательского домена сдерживает проверку. Как я могу передать оба этих класса в действие и просмотр контроллера? – user2985824
- 1. Каков наилучший способ Хэш пароля в Codeigniter
- 2. Каков наилучший способ безопасного хранения пароля (хэши)
- 3. Проверка подтверждения пароля и пароля Django
- 4. Правильный способ проверки пароля
- 5. Забыли пароль? Каков наилучший способ реализации функции забытого пароля?
- 6. Каков наилучший метод шифрования пароля в Swift?
- 7. Настройка пароля/подтверждения пароля без [Сравнить]
- 8. пароль и подтверждение подтверждения пароля
- 9. Каков наилучший способ реализовать восстановление пароля с точки зрения юзабилити?
- 10. Каков правильный способ проверки пароля в PHP 5.4?
- 11. Автоматического подтверждения пароля псевдоним
- 12. Правило для проверки старого пароля и нового пароля
- 13. Подтверждения пароля и repassword с JQuery
- 14. Каков наилучший способ проверки строки?
- 15. Каков наилучший способ проверки возраста?
- 16. Каков наилучший способ проверки XMLObject
- 17. Validation для проверки пароля и подтверждения пароля такие же не работает
- 18. Проблема с подтверждением подтверждения пароля подтверждения
- 19. Каков наилучший способ проверки даты и времени
- 20. Проверка пароля. Проблемы с методами проверки пароля
- 21. Программа проверки пароля - несоответствие пароля - ошибка петли
- 22. Каков спокойный способ реализовать забытую функцию пароля?
- 23. Лучший способ для хранения пароля
- 24. Программа проверки пароля
- 25. Аутентификация имени пользователя и пароля
- 26. Условные проверки пароля в Rails
- 27. Каков формат пароля joomla?
- 28. Восстановление пароля с помощью хэширования пароля sha1
- 29. Каков наилучший способ проверки ассоциации в Rails?
- 30. проверки пароля JQuery
проверки в порядке, и я также добавить '' password' и passwordConfirm' в [переходных] (Http: // Граалей .org/doc/latest/ref/Domain% 20Classes/transients.html), в противном случае они будут сохранены. Другой вариант - использовать CommandObject для проверки. –
Зачем вам добавлять пароль для переходных процессов? Вы должны хранить пароль. Только не passwordConfirm. – Gregg
Из соображений безопасности я сохранил бы хэш, сгенерированный паролем, в другом поле, например 'passwordHash'. –