我已经构建了一个登录表单,但没有注册表单,所以我将用户详细信息直接放到sql数据库中。
我发现当用户尝试登录时,cakephp会自动哈希密码,但此刻我无法登录,因为数据库中的密码未被哈希。
cakephp如何散列密码?散列密码
我的安全盐是Dhhfei38fhDg37dg6Dg208Dh3h380Hrjd3
可否请你走在我通过它做什么?
我已经构建了一个登录表单,但没有注册表单,所以我将用户详细信息直接放到sql数据库中。
我发现当用户尝试登录时,cakephp会自动哈希密码,但此刻我无法登录,因为数据库中的密码未被哈希。
cakephp如何散列密码?散列密码
我的安全盐是Dhhfei38fhDg37dg6Dg208Dh3h380Hrjd3
可否请你走在我通过它做什么?
散列密码由创建:
$hashedPasswords = Security::hash($yourPass, NULL, true);
根据How to – password hashing in cakephp:“Security :: hash采用类型sha1”。
这里是一个在线的散列运算单元:http://www.fileformat.info/tool/hash.htm –
添加一个新用户并输入密码。您可以获取新用户密码的哈希值并将其粘贴到其他用户的记录中。在CakePHP中
我没有带创建的注册表单尚未虽然,只是想知道如果任何人都知道如何蛋糕它可以离开的注册表格,直到后来,但仍然能够登录。谢谢 – Chris
作为CakePHP的2.0,蛋糕仅在其他地方的密码散列在登录过程中, (如寄存器方法... ),那么密码将不会被自动散列,这是因为对于cakephp的新用户来说,这被认为是一种奇怪的行为。 如果你想散列密码,你需要使用Sudhir提到的方法。 蛋糕不再自动散列密码的好处之一是,你可以更容易地检查密码的复杂性(如果包含特殊字符,数字,字母ecc)。
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
我建议使用一种行为来保持代码DRY:dereuromark.de/2011/08/25/working-with-passwords -in-的CakePHP – mark