Lorsque vous écrivez le code pour insérer un enregistrement dans la table des usagers, vous devrez prendre soin de crypter le mot de passe. En fait, on devrait dire appliquer un algorithme de hashage.
Laravel offre la façade Hash pour y parvenir.
Ex :
$motDePasseCrypte = Hash::make($motDePasseEnClair');
Le même résultat sera obtenu comme suit :
$motDePasseCrypte = bcrypt($motDePasseEnClair);
Ces deux techniques se chargent d'ajouter une clé de salage qui sera stockée à même le mot de passe.
Si vous testez les deux approches, vous obtiendrez un résultat différent puisque l'algorithme de hashage est conçu pour ne jamais retourner le même résultat.
La fonction bcrypt() appelle Hash::make(), qui utilise la fonction PHP password_hash. Vous pouvez voir le code de la façade Hash dans le fichier vendor\laravel\framework\src\Illuminate\Hashing\BcryptHasher.php.
Il est possible de forcer le cryptage du mot de passe dès que l'on ajoute un enregistrement dans la table des usagers.
Si vous utilisez cette technique, vous ne devez pas crypter le mot de passe par programmation dans le contrôleur avant de faire l'enregistrement. Tout sera fait automatiquement pour vous lors de l'enregistrement.
Ex :
use Hash;
...
class Usager extends Authenticatable
{
...
/**
* Assigne un mot de passe crypté au champ motdepasse.
* Le mot de passe sera donc crypté même si on fait directement $usager->motdepasse = 'motenclair';
*
* @param String
*/
public function setMotDePasseAttribute($motdepasse)
{
$this->attributes['motdepasse'] = Hash::make($motdepasse);
}
}
La fonction Hash::check() permet de comparer la valeur d'une chaîne en clair avec une valeur cryptée. Elle retournera true si le cryptage de la première chaîne correspond à la valeur de la seconde.
$usager = Usager::find($id);
$motDePasseOK = Hash::check($motDePasseEnClair, $usager->motdepasse);
« Hashing ». Laravel. https://laravel.com/docs/master/hashing
« Laravel Hash::make() explained ». Cogito, ergo sum. https://mnshankar.wordpress.com/2014/03/29/laravel-hash-make-explained/
▼Publicité