我无法找到任何地方如何验证密码,其被散列后随机盐我的代码以哈希密码后找回密码随机盐散列BCript
public function validatePassword($password){
return password_verify($this->password, self::model()->password);
}
但它似乎没有工作,也许任何人都可以让我知道为什么?
我无法找到任何地方如何验证密码,其被散列后随机盐我的代码以哈希密码后找回密码随机盐散列BCript
public function validatePassword($password){
return password_verify($this->password, self::model()->password);
}
但它似乎没有工作,也许任何人都可以让我知道为什么?
再次哈希它完全相同的方式并比较2个字符串。这是大多数密码比较的方式。
你实际上并没有在你的validatePassword函数中使用$password
参数。注意:$password
应该是输入的明文密码,第二个参数应该包含您之前存储的散列版本。试试这个:
public function validatePassword($password){
return password_verify($password, self::model()->password);
}
此外,最好不要自己处理盐渍。只需使用PASSWORD_DEFAULT
选项,不要盐。 PHP将处理它。如果PHP版本升级更改默认值,您可以使用password_needs_rehash()
来检查是否需要重新密码。
请注意,您必须保存为每个密码生成的盐,以便能够在比较时使用同一个密码(这对于所有密码都是独一无二的,如果密码保密,就足够安全) –
准确地说,整个要点是在安全违规情况下从不存储实际密码。 –
因此,这意味着我必须保存盐。那么是否有一个安全的做法,让盐表包含每个用户的用户ID和盐? – Shepard