使用Bcrypt登录代码点火器时遇到问题。 密码在我的数据库中进行哈希处理。我已经成功从我的数据库中检索了哈希密码,但我似乎无法完成验证。
检索哈希密码:
function getPass($username)
{
$this->db->select('password');
$this->db->from("users");
$this->db->where("username",$username);
$query = $this->db->get();
foreach ($query->result() as $row)
{
return $row->password;
}
}
}
我的验证功能是我尝试检查原始的哈希密码:
public function validate($hashedpass,$password)
{
$this->db->where('username', $this->input->post('username', true));
if ($this->bcrypt->check_password($password,$hashedpass)) {
return true;
} else {
return false;
}
}
我的控制员:
public function process()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$hashedpass = $this->login_model->getPass($username);
$query = $this->login_model->validate($password,$username,$hashedpass);
if($query){
// If there is a user, then create session data and login etc..
}
任何人都知道我在验证功能中出错了什么?
提前致谢!
答案 0 :(得分:0)
我怀疑问题出在你没有显示的check_password函数中。另外,请考虑使用现有的CodeIgniter库,例如https://github.com/benedmunds/CodeIgniter-Ion-Auth
添加了回复评论的信息,因为评论时间过长:
它包括bcrypt作为可用的加密库。该插件是在几年前制作的,我认为bcrypt不是默认设置,因为它当时并不普遍支持,但它包含了如何使其成为默认设置的非常简单的说明。
它是一个非常即插即用的库,需要几分钟才能实现,还具有用于分组权限集的用户组,并具有放入控制器并检查是否有权使用所请求的特定页面/权限的功能。
它还包括一个管理GUI,有简单的页面来管理用户和组,它有一些前端页面,如登录,忘记密码等。
它是由CodeIgniter爱好者为CodeIgniter爱好者建造的!它完全兼容3.0,我在很多项目中使用它。
答案 1 :(得分:0)
我注意到您对validate的调用有3个参数
$query = $this->login_model->validate($password,$username,$hashedpass);
但你的原型只有两个
public function validate($hashedpass,$password)
此行似乎未使用......
$this->db->where('username', $this->input->post('username', true));