Pregunta
He creado un formulario de inicio de sesión pero no un formulario de registro, así que estoy poniendo los detalles de los usuarios directamente en la base de datos SQL.
He descubierto que CakePHP ha asaltado automáticamente la contraseña cuando el usuario intenta iniciar sesión, pero en este momento no puedo iniciar sesión porque la contraseña en la base de datos no está hash.
¿Cómo cuestes hash las contraseñas?
Mi sal de seguridad es Dhhfei38fhDg37dg6Dg208Dh3h380Hrjd3
¿Podrías guiarme por lo que hace?
Solución
Las contraseñas de hash en CakePHP son creadas por:
$hashedPasswords = Security::hash($yourPass, NULL, true);
Otros consejos
debug(AuthComponent::password("your-password"));
Eso es si está hashing su contraseña de esta manera dentro de su 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
Agregue un nuevo usuario con una contraseña. Puede tomar el valor hash de la contraseña del nuevo usuario y pegarla en los registros de otros usuarios.
A partir de CakePHP 2.0, el pastel solo hashas contraseñas en el proceso de inicio de sesión, en otros lugares (como el método de registro ...), la contraseña no se ha asaltado automáticamente, eso se debe a que se consideró un comportamiento extraño para las personas que estaban nuevas Cakephp. Si desea hash la contraseña, debe usar el método que se mencionó Sudhir. Una de las ventajas de que Cake ya no hah las contraseñas automáticamente es que puede verificar más fácilmente la complejidad de la contraseña (si hay caracteres especiales incluidos, números, letras ECC).
De acuerdo a Cómo - Password Hashing en CakePhp: "Seguridad :: hash toma el tipo SHA1".