Zend - можете ли вы использовать валидатор для проверки комбинации имени пользователя и пароля в Zend_Form?
Я изучил Zend Framework: Zend_Validate_Db_RecordExists и Zend_Validate_Db_NoRecordExists и заметил, что вы можете проверить столбцы в таблице базы данных, чтобы увидеть, отображается ли значение в вашей форме в именованном столбце.
Я также заметил, что вы можете исключить строку на основе значения другого столбца в той же строке.
Можно ли проверить, что пароль соответствует имени пользователя с помощью этих валидаторов?
До сих пор в моей форме, если пользователь вводит правильное имя пользователя и правильный пароль (но не обязательно пароль для этого имени пользователя!), Форма проверяет ввод. Очевидно, что для формы входа в систему или формы активации имени пользователя / токена токен или пароль должны совпадать с именем пользователя в той же строке!
Благодарю.
$this->addElement('text', 'handle', array(
'label' => 'Username:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
array(
'NotEmpty', true, array('messages' => 'You must enter your username.')
),
array(
'Db_RecordExists',
false,
array (
'member_activation',
'member_username'
)
)
)
));
$this->addElement('text', 'validationCode', array(
'label' => 'Code:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
array(
'NotEmpty', true, array('messages' => 'You must enter your validation code.')
),
array(
'Db_RecordExists',
false,
array (
'member_activation',
'member_validationcode'
)
)
)
));
2 ответа
Не могли бы вы включить аутентификацию в Zend_Validate? Абсолютно?
Вы должны? Конечно нет.
Если вы делаете, вы смешиваете проблемы. Zend_Validate_Db_RecordExists
вещи на самом деле вроде границы, но это удобно.
Но как только вы идете по дороге, которую вы рассматриваете, почти все становится проверкой, тогда как на самом деле это не так. Вы можете найти себе все виды вещей, такие как проверки ACL и т. Д.
Валидация должна быть связана почти всегда с форматом вещей. Добавление зависимостей от постоянства данных, системы ACL или чего-либо еще только увеличит сплоченность. Это усложнит тестирование, отладку или изменение вашего кода.
Используйте Zend_Validate для проверки. Убедитесь, что строки не слишком длинные. Убедитесь, что эти значения>= 0. Убедитесь, что номер телефона в США имеет десять цифр.
Но если вам нужно выполнить более глубокие проверки, которые углубляются в ваш уровень персистентности и связаны с вашей бизнес-логикой, вам лучше сделать это где-то далеко от простой проверки формы.
Если вы придерживаетесь проверки в вашем Zend_Form
вы делаете его зависимым от вашей базовой платформы, что (с точки зрения доменного управления) не очень хорошая вещь, поскольку вы связываете часть своей доменной логики с внешним ресурсом вашего приложения.