我已经构建了一个登录表单但没有注册表单,因此我将用户详细信息直接放入sql数据库。
我发现cakephp会在用户尝试登录时自动哈希密码,但目前我无法登录,因为数据库中的密码没有进行哈希处理。
cakephp如何散列密码?
我的安全盐是Dhhfei38fhDg37dg6Dg208Dh3h380Hrjd3
你能告诉我它的作用吗?
答案 0 :(得分:9)
cakephp中的散列密码由以下人员创建:
$hashedPasswords = Security::hash($yourPass, NULL, true);
答案 1 :(得分:4)
debug(AuthComponent::password("your-password"));
如果您在UserModel中以这种方式哈希密码,那就是这样。
public function beforeSave() {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#hashing-passwords
答案 2 :(得分:2)
使用密码添加新用户。您可以获取新用户密码的哈希值,并将其粘贴到其他用户的记录中。
答案 3 :(得分:2)
从Cakephp 2.0开始,Cake只在登录过程中散列密码, 在其他地方(比如register-method ...),密码不会自动散列,这是因为对于那些对cakephp来说很新的人来说,这被认为是一种奇怪的行为。 如果要哈希密码,则需要使用Sudhir提到的方法。 蛋糕不再自动散列密码的优点之一是,您可以更轻松地检查密码复杂性(如果包含特殊字符,数字,字母ecc)。
答案 4 :(得分:1)
根据How to – password hashing in cakephp:“Security :: hash采用sha1类型。”