【发布时间】:2014-06-19 23:15:40
【问题描述】:
我在使用 Phalcon php 检查 bcrypted 密码时遇到了一点问题。我所拥有的是: 我检查密码的登录脚本
$username = $this->request->getPost('username', 'string');
$password = $this->request->getPost('password', 'string');
$conditions = "Username = :username:";
$parameters = array (
"username" => $username
);
$user = Users::findFirst(array($conditions, 'bind' => $parameters));
//check if user exists
if (count($user) > 0 && $user !== false) {
if ($this->security->checkHash($password, $user->Password)) //always fails {
//login
$this->session->set('username', $user->Password);
$this->response->redirect('index');
}
在我的注册中我有:
$name = $this->request->getPost('name', 'string');
$lastName = $this->request->getPost('lastName', 'string');
$username = $this->request->getPost('username', 'string');
$password = $this->request->getPost('password', 'string');
$email = $this->request->getPost('email', 'email');
$user = new Users(); //model
$user->Name = $name;
$user->LastName = $lastName;
$user->Username = $username;
$user->Password = $this->security->hash($password);
$user->Email = $email;
if ($user->save() == true) {
//registered
} else {
//error
}
似乎我正在按照documentation 做所有事情,但它似乎不起作用。谁能帮帮我。
【问题讨论】:
-
您是否出于兴趣追查了数据库中存储的密码是什么,您在
$user->Password中收到了什么,如果您再次尝试对收到的密码进行哈希处理,$this->security->hash($password);会产生什么?它们匹配吗? -
另外,您确定要在此处设置正确的内容吗?
$this->session->set('username', $user->Password); -
我在数据库中有一个密码为“jt26”的用户。我试过调用 die($this->security->hash('jt26'));在我的控制器中查看密码。它每次都会产生不同的字符串。应该这样吗?
-
很多时候保存BCrypt哈希的数据库字段太小,应该可以存储60个字符的字符串。
-
对我来说,Phalcon 也会为相同的密码产生不同的哈希结果。如果我遗漏了什么,请告诉我。
标签: php hash passwords bcrypt phalcon