BlowfishPasswordHasher не разрешает вход в систему

В cakephp были изменены с simplePasswordHasher на BlowfishPasswordHasher. Я добавляю следующий код и закомментирую все ссылки на старый метод simplehasher, но не могу войти в систему. Я могу создать нового пользователя с помощью BlowfishPasswordHasher, но теперь логины не работают?

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

CakePHP - Как реализовать хеширование паролей blowfish?

http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html.

//userscontroller
public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
           return $this->redirect($this->Auth->redirectUrl()); //for 2.3 and above versions, docs are old

        }
        $this->Session->setFlash(__('Invalid username or password, try again'));
    }
}  

//user
App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth');

public function beforeSave($options = array()) {
    if (isset($this->data[$this->alias]['password'])) {
        $passwordHasher = new BlowfishPasswordHasher();
        $this->data[$this->alias]['password'] = $passwordHasher->hash(
            $this->data[$this->alias]['password']
        );
    }
    return true;
}

//new user
  <?php echo $this->Form->create('User'); ?>
    <h2><?php echo __('Add User2'); ?></h2>
    <?php
    echo $this->Form->input('username');
    echo $this->Form->input('password');

// в appcontroller public $ components = array ("Электронная почта", 'Сессия', 'Auth');

публичная функция beforeFilter () {

        $this->Auth->authError = 'You cant access this page';
        $this->Auth->loginRedirect= array('controller' => 'users', 'action' => 'dashboard');
        $this->Auth->logoutRedirect= array('controller' => 'users','action' => 'login'  );
        $this->Auth->authorize= array('Controller');
        $this->Auth->unauthorizedRedirect=  '/users/dashboard'; 
        $this->set("logged_in", $this->Auth->loggedIn())

//user model
    public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A username is required'
            )
        ),
        'password' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A password is required'
            )
        )

person ajt    schedule 14.08.2014    source источник
comment
Какова длина поля вашего пароля? Хэши Blowfish длиннее, чем sha1.   -  person ADmad    schedule 14.08.2014
comment
varchar (255) это правильно?   -  person ajt    schedule 14.08.2014
comment
Да, это достаточно долго, хотя, если вы меняли его недавно, обязательно очистите кеш модели.   -  person ADmad    schedule 14.08.2014
comment
Я не менял поле пароля в mysql, так в чем проблема?   -  person ajt    schedule 14.08.2014
comment
Вы не включили в сообщение свою конфигурацию Auth. Правильно ли он настроен для использования BlowfishPasswordHasher?   -  person ADmad    schedule 14.08.2014
comment
Как выглядит ваша конфигурация компонента Auth? (@ADmad меня опередил) И вы уверены, что пытаетесь войти в систему с новым пользователем, то есть с тем, у которого в базе данных есть хэш blowfish? И прежде чем начнутся дальнейшие безумные предположения, что вы пытались до сих пор для устранения проблемы?   -  person ndm    schedule 14.08.2014
comment
Я отредактировал вопрос и добавил конфигурацию аутентификации. что-нибудь еще, дайте мне знать, и я не получу никаких ошибок, кроме недопустимого пользователя для только что созданного пользователя с blowfishpasswordhasher. Как правильно настроить BlowfishPasswordHasher, поскольку это может быть проблема, которую я не заметил в документации   -  person ajt    schedule 14.08.2014
comment
хорошо, спасибо, это будет что в beforefilter? 'Authenticate' = ›array ('Form' =› array ('passwordHasher' = ›'Blowfish')   -  person ajt    schedule 14.08.2014


Ответы (1)


Вы не настроили Auth для использования BlowfishPasswordHasher, поэтому он по-прежнему использует хешер по умолчанию. Укажите ключ passwordHasher, как показано, например, в. здесь.

person ADmad    schedule 14.08.2014