Вход для Codeigniter с codeigniter-bcrypt

Я использую codeigniterbcrypt из https://github.com/dwightwatson/codeigniter-bcrypt с помощью codeigniter. У меня есть форма, которая отправляет данные на мой главный контроллер. Затем я проверяю через модель БД для записи. Я использовал

$hash = $this->bcrypt->hash_password($password); 

Хеш пароль при создании учетной записи. И это работает. Пароль правильно хэшируется в БД. Теперь, однако, я не уверен, где использовать обратный, чтобы проверить, введен ли пароль, введенный в форму для публикации, так же, как и хэшированный пароль БД.

 if ($this->bcrypt->check_password($password, $stored_hash)) { // Password does match stored password. } else { // Password does not match stored password. } 

Мой код в моей модели

 function getUserByLogin($login, $password) { $this->db->where('login',$login); $this->db->where('password',$password); $result = $this->getUsers(); if (count($result) > 0) { return $result[0]; } else { return null; } } function getUsers() { $query = $this->db->get('users'); if ($query->num_rows() > 0) { return $query->result(); } else { return array(); } } 

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

 if (isset($_POST['email']) && isset($_POST['password'])) { $login = $_POST['email']; $password = $_POST['password']; $user = $this -> user_model -> getUserByLogin($login, $password); $this -> saveUserToSession($user); $loggedIn = ($user == null ? false : true); } 

Любая помощь будет оценена по достоинству.

Это не будет сделано:

  $this->db->where('password',$password); 

Вы проверяете фактический необработанный пароль внутри БД.

Вы должны получить хэш из базы данных, а затем сравнить его с паролем пользователя:

 function getUserByLogin($login, $password) { $this->db->where('login',$login); $result = $this->getUsers($password); if (!empty($result)) { return $result; } else { return null; } } function getUsers($password) { $query = $this->db->get('users'); if ($query->num_rows() > 0) { $result = $query->row_array(); if ($this->bcrypt->check_password($password, $result['password'])) { //We're good return $result; } else { //Wrong password return array(); } } else { return array(); } }