Компонент CakePHP Auth скрывает пароль - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть следующий код для входа в систему:

<?php 
    echo $session->flash('auth');
    echo $this->Form->create('User', array('action' => 'login'));
    echo $this->Form->input('email');
    echo $this->Form->input('password');
    echo $this->Form->end('Login');
?>

Это генерирует следующий HTML:

   <div id="authMessage" class="message">Login failed. Invalid username or password.</div>
   <form id="UserLoginForm" method="post" action="/control/users/login" accept-charset="utf-8">
      <div style="display: none;"><input name="_method" value="POST" type="hidden"></div>
      <div class="input text required">
         <label for="UserEmail">Email</label>
         <input name="data[User][email]" maxlength="255" value="" id="UserEmail" type="text">
      </div>
      <div class="input password">
         <label for="UserPassword">Password</label>
         <input name="data[User][password]" id="UserPassword" type="password">
      </div>
      <div class="submit"><input value="Login" type="submit"></div>
   </form>

Контроллер приложения:

    function beforeFilter()
    {
        $this->Auth->fields = array (
            'username' => 'email',
            'password' => 'password'
        );
    }

Когда я пытаюсь войти в систему, я получаю сообщение об ошибке, что мой пароль неверен. Вот дамп $ this-> data:

Array
(
    [User] => Array
        (
            [email] => myemail@gmail.com
            [password] => 
        )

)

Я нашел несколько других похожих вопросов по stackoverflow, но ни на один из них, похоже, нет ответа. Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 09 февраля 2011

Компонент cakePHP Auth хеширует ваш пароль и пытается сопоставить его с паролем в БД.
Они хэшируют пароль с солью .
Если вы установили Hash на MD5, тогда
MD5($password.$salt) будет храниться вместе с паролем в БД.

Поэтому, пожалуйста, убедитесь, что вы храните правильный пароль.

Для ввода фиктивных данных. Я обычно пытаюсь отладить $this->Auth->password($password) Затем я скопирую результат и вставлю в БД.

Если пароль неправильный, компонент Auth сбрасывает поле пароля внутренне, т.е. почему вы получаете этот результат.

Array
(
    [User] => Array
        (
            [email] => myemail@gmail.com
            [password] => 
        )

)

Это не означает, что ваш пароль недоступен для проверки в БД.

Счастливая выпечка

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