我是一名使用 Codeigniter 的初学者,并且选择了 dx auth 库在我的网站上进行授权。在设置密码更改之前,一切都运行良好。
问题的本质在于库的标准形式总是报错:“Wrong old password”。我怀疑问题出在用户输入验证的密码的加密上。控制器中的方法本身如下所示:
<? php function change_password($old_pass, $new_pass){
// Load Models
$this->ci->load->model('dx_auth/users', 'users');
// Default return value
$result = FAlSE;
// Search current logged in user in database
if ($query = $this->ci->users->get_user_by_id($this->ci->session->userdata('DX_user_id')) AND $query->num_rows() > 0)
{
// Get current logged in user
$row = $query->row();
$pass = $this->_encode($old_pass);
// Check if old password correct
if (password_verify($pass, $row->password))
{
// Crypt and encode new password
$new_pass = password_hash($new_pass, PASSWORD_BCRYPT);
// Replace old password with new password
$this->ci->users->change_password($this->ci->session->userdata('DX_user_id'), $new_pass);
// Trigger event
$this->user_changed_password($this->ci->session->userdata('DX_user_id'), $new_pass);
$result = TRUE;
}
else
{
$this->_auth_error = $this->ci->lang->line('auth_incorrect_old_password');
}
}
return $result;
} ?>
配置中没有加密密钥,所以如果我对所有内容都理解正确,那么每次都会对相同的密码进行不同的哈希处理。
问:我在哪里可以找到加密密钥?或者问题是否以其他方式解决?