Невозможно подтвердить пароль с помощью password_verify - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь добиться перенаправления на домашнюю страницу пользователя, хранящего электронную почту в сеансе в Codeigniter. Я использовал password_hash($this->input->post('password'), PASSWORD_DEFAULT)) для хеширования паролей, и он отлично работает, но когда я пытаюсь password_verify(), это не удается.

Вот моя модель

public function canLogin($email, $password) {
    $this->db->where('email',$email);
    $query  =   $this->db->get($this->tableName);
    $row    =   $query->row();
    if ($row) {
        return password_verify($password, $row->password);
    }
    else {
        return false;
    }
}

и вот мой контроллер

public function loginValidation() {
    // User Model Loaded in constructor
    if ($this->user->canLogin($_POST['email'], $_POST['password'])) {
        $session_data   =   array('email' => $_POST['email'] );
        $this->session->set_userdata($session_data);
        redirect('profile/personal','Refresh');

    } else {
        echo 'fail';
        $this->session->set_flashdata('error', 'Invalid Username or Password');
        // redirect('login','Refresh');
    }
}

Я не знаю, где логика пошла не так, и она каждый раз перенаправляет на одну и ту же страницу входа, я пытаюсь аутентифицировать ее, сохранять электронную почту в сеансе и перенаправлять ее на profile/personal, Может кто-нибудь указать, где я пропустил логику

Ответы [ 2 ]

0 голосов
/ 11 января 2019

@ YashKaranke какая длина столбца пароля? - Funk Forty Niner
@FunkFortyNiner Это 50 с типом данных varchar - Яш Каранке

Длина столбца пароля слишком короткая, она должна быть 60 или 255, как предлагает руководство по PHP.net для password_hash().

Теперь вам нужно начать заново с новыми хэшами.

Ошибка проверки молча .

0 голосов
/ 11 января 2019

Если вы используете:

password_hash($this->input->post('password', PASSWORD_DEFAULT));

Вы уверены, что это правильно Не должно ли это быть:

password_hash($this->input->post('password'), PASSWORD_DEFAULT);
...