CakePHP 2:4: Authcomponent не работает

Там у меня две таблицы

1) aucusers 2) user_types

Для использования компонента аутентификации я использовал приведенный ниже код в appcontroller.

public $components = array('Session','RequestHandler','Paginator'=>array('limit'=>4),'Auth'=>array(
    'loginAction' => array(
        'controller' => 'aucusers',
        'action' => 'login'
    ),
        'loginRedirect' => array('controller' => 'aucusers','action' => 'add'),
        'logoutRedirect' => array('controller' => 'aucusers','action' => 'add'),
        'authError'=>'You can not access this page!!',
    ));



public function beforeFilter() {

    $this->set('logged_in', $this->Auth->loggedIn());
    $this->set('current_user',$this->Auth->user());
     parent::beforeFilter();
        $this->Paginator->settings = array(
          'limit'=>4
    );

В модели для хеш-пароля я использовал

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

В контроллере aucusers я добавил

public function login() {

    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirect());
        }
        $this->Session->setFlash(__('Invalid username or password, try again'));
    }
}

    public function logout() {
        return $this->redirect($this->Auth->logout());
    }

После добавления

$this->Auth->allow()

Я создал пользователя. Но когда я собираюсь войти, он показывает мне

Неверное имя пользователя или пароль, попробуйте еще раз.


person cms    schedule 15.11.2014    source источник
comment
Грязный трюк для проверки правильности настройки вашей функции хеширования паролей - в core.php установите для отладки значение 2, а затем, когда вы попытаетесь войти в систему (и это не удастся), просмотрите хэш, который он использовал в дампе SQL. Сравните это с хешем в базе данных. Это то же самое?   -  person robmcvey    schedule 15.11.2014


Ответы (1)


Насколько я знаю, вы должны определить, какой метод хэширования вы используете.

Из http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'passwordHasher' => array(
                    'className' => 'Simple',
                    'hashType' => 'sha256'
                )
            )
        )
    )
);
person Nizam    schedule 19.11.2014