无法使用 password_verify 验证密码
Cannot verify password with password_verify
我正在尝试实现重定向到在 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
,任何人都可以指出哪里我错过了逻辑?
如果您正在使用:
password_hash($this->input->post('password', PASSWORD_DEFAULT));
您确定哈希处理正确吗?不应该是:
password_hash($this->input->post('password'), PASSWORD_DEFAULT);
@YashKaranke what is the password column's length? – Funk Forty Niner
@FunkFortyNiner It is 50 with datatype varchar – Yash Karanke
密码栏的长度太短,应该是 the manual on PHP.net for password_hash()
建议的 60 或 255。
您现在必须使用新的哈希值重新开始。
验证失败默默.
我正在尝试实现重定向到在 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
,任何人都可以指出哪里我错过了逻辑?
如果您正在使用:
password_hash($this->input->post('password', PASSWORD_DEFAULT));
您确定哈希处理正确吗?不应该是:
password_hash($this->input->post('password'), PASSWORD_DEFAULT);
@YashKaranke what is the password column's length? – Funk Forty Niner
@FunkFortyNiner It is 50 with datatype varchar – Yash Karanke
密码栏的长度太短,应该是 the manual on PHP.net for password_hash()
建议的 60 或 255。
您现在必须使用新的哈希值重新开始。
验证失败默默.