Проверка проблемы длины пароля для регистрации в CakePHP - PullRequest
0 голосов
/ 30 марта 2011

Я пытаюсь написать базовую страницу регистрации пользователя, и моя проблема в проверке строки password длины.Я читал о различных проблемах и решениях по этому вопросу, но у меня все еще проблемы.

Это то, что я написал:

class UsersController extends AppController {

    function register () {
        if (!empty ($this->data)) {
            if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {
                if ($this->User->save($this->data)) {
                    $this->Session->setFlash('All ok');
                    $this->redirect(array('action', 'login'));
                }
            } else {
                $this->Session->setFlash('Password mismatch');
                $this->redirect(array('action', 'register'));
            }
        }
    }
}

Тогда модель пользователя:

var $validate = array (
    'username' => array (
        'alphaNumeric' => array(
            'rule' => 'alphaNumeric',
            'required' => true,
            'message' => 'Alphanumeric chars only'
        ),
        'between' => array(
            'rule' => array('between', 1, 24),
            'message' => 'Username between 1 and 24 chars'
        )
    ),
    'password' => array (
        'between' => array(
            'rule' => array('between', 7, 25),
            'message' => 'Password between 8 and 24 chars'
        )
    )
);

Файл register.ctp

<?php
echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->input('password_confirm', array('type' => 'password'));
echo $this->Form->end('Register account');
?>

Проверка пароля и password_confirm работает отлично, если я пишу разные пароли, я получаю ошибку, если пароль равен, я получаю ошибку длины пароля, где яя не прав?

log:

2011-03-29 23:20:41 Error: Array
(
    [User] => Array
    (
        [username] => tonino
        [password] => ae4f47749b697085b2f7322383fa7b14c79e06f6
        [password_confirm] => passwordtest
    )

)

Я забыл сказать, что мой пароль SHA1 hashed, так как я могу проверить, если пользователь пишет слишком длинный пароль?

1 Ответ

2 голосов
/ 30 марта 2011

Пароли автоматически хешируются AuthComponent.Вся проверка, которую вы делаете, выполняется с паролем "ae4f47749b697085b2f7322383fa7b14c79e06f6", а не "passwordtest", поэтому он не проходит проверку.Необходимо выполнить проверку в поле password_confirm, а не в поле password.

См. здесь для примера несколько прозрачного решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...