Ce hacheur utilise la constante PHP PASSWORD_DEFAULT
comme méthode de
cryptage. Le type de hachage par défaut est bcrypt
.
Cf. la documentation PHP pour plus d’informations sur bcrypt et le hachage de mots de passe de PHP.
Les options de configuration pour cet adaptateur sont:
hashType: L’algorithme de hachage à utiliser. Les valeurs valides sont
celles qui sont supportées par l’argument $algo
de password_hash()
.
Par défaut PASSWORD_DEFAULT
.
hashOptions: Tableau associatif d’options. Consultez le manuel PHP pour les options supportées pour chaque type de hachage. Par défaut un tableau vide.
C’est un hacheur de mots de passe pour les applications migrées de CakePHP2.
Le hacheur de mots de passe de repli (fallback) vous permet de configurer plusieurs hacheurs qu’il vérifiera séquentiellement. Cela permet aux utilisateurs de se connecter avec un ancien type de hachage jusqu’à ce que leur mot de passe soit redéfini et mis à niveau vers le nouveau hachage.
CakePHP propose un moyen propre de migrer les mots de passe de vos utilisateurs
d’un algorithme à un autre ; cela s’accomplit avec la classe
FallbackPasswordHasher
. En supposant que vous veuillez migrer un mot de
passe Legacy vers le hacheur par défaut bcrypt, vous pouvez configurer le
hacheur fallback comme suit:
$service->loadIdentifier('Authentication.Password', [
// Autres options de configuration
'passwordHasher' => [
'className' => 'Authentication.Fallback',
'hashers' => [
'Authentication.Default',
[
'className' => 'Authentication.Legacy',
'hashType' => 'md5',
'salt' => false // coupe l'utilisation par défaut du sel
],
]
]
]);
Ensuite, dans votre action login, vous pouvez utiliser le service
d’authentification pour accéder à l’identificateur Password
et vérifier si
le mot de passe de l’utilisateur actuel a besoin d’être mis à niveau:
public function login()
{
$authentication = $this->request->getAttribute('authentication');
$result = $authentication->getResult();
// Que l'on soit en POST ou GET, rediriger l'utilisateur s'il est connecté
if ($result->isValid()) {
// En supposant que vous utilisez l'identificateur `Password`.
if ($authentication->identifiers()->get('Password')->needsPasswordRehash()) {
// Le re-hachage se produit lors de la sauvegarde.
$user = $this->Users->get($authentication->getIdentity()->getIdentifier());
$user->password = $this->request->getData('password');
$this->Users->save($user);
}
// Rediriger ou afficher un template.
}
}