Usando la constante php PASSWORD_DEFAULT
para el método de encriptación.
El tipo de hash por defecto es bcrypt
.
Ver la documentación php para obtener más información sobre bcrypt y el hash de contraseñas de PHP.
Las opciones de configuración de este adaptador son:
hashType: Algoritmo hash a usar. Los valores válidos son los admitidos
por $algo
argumento de password_hash()
. Por defecto es
PASSWORD_DEFAULT
hashOptions: Array asociativo de opciones. Revisa las opciones soportadas para cada tipo de hash en el manual PHP. Por defecto es un array vacío.
Este es un hasher de contraseñas para aplicaciones que fueron migradas de CakePHP2.
El hasher de contraseña fallback le permite configurar varios hashers y los comprobará secuencialmente. Esto permite a los usuarios iniciar sesión con un tipo de hash antiguo hasta que se restablezca su contraseña y se actualice a un nuevo hash.
CakePHP proporciona una forma limpia de migrar las contraseñas de sus
usuarios de un algoritmo a otro, esto se logra a través de la clase
FallbackPasswordHasher
. Suponiendo que desea migrar de una contraseña
Legacy a el hasher bcrypt predeterminado, puede configurar el hasher fallback
de la siguiente manera:
$service->loadIdentifier('Authentication.Password', [
// Otras opciones de configuración
'passwordHasher' => [
'className' => 'Authentication.Fallback',
'hashers' => [
'Authentication.Default',
[
'className' => 'Authentication.Legacy',
'hashType' => 'md5',
'salt' => false // desactiva el uso predeterminado de salt
],
]
]
]);
Luego, en su acción login, puede usar el servicio de autenticación para acceder
al identificador del Password
y verificar si la contraseña del usuario
actual debe actualizarse:
public function login()
{
$authentication = $this->request->getAttribute('authentication');
$result = $authentication->getResult();
// independientemente de si es POST o GET, redirige si el usuario ha iniciado sesión
if ($result->isValid()) {
// Suponiendo que está utilizando el identificador `Password`.
if ($authentication->identifiers()->get('Password')->needsPasswordRehash()) {
// El rehash ocurre al guardar.
$user = $this->Users->get($this->Auth->user('id'));
$user->password = $this->request->getData('password');
$this->Users->save($user);
}
// Redirige o muestra una plantilla..
}
}