Comment créer un mot de passe haché laravel
J'essaie de créer un mot de passe haché pour Laravel. Maintenant, quelqu'un m'a dit d'utiliser Laravel hash helper mais je n'arrive pas à le trouver ou je regarde dans la mauvaise direction.
Comment créer un mot de passe haché laravel? Et où?
Modifier: Je sais ce qu'est le code mais je ne sais pas où et comment l'utiliser donc il me rend le mot de passe haché. Si j'obtiens le mot de passe haché, je peux l'insérer manuellement dans la base de données
8 réponses
Hachage D'un mot de passe en utilisant Bcrypt dans Laravel
:
$password = Hash::make('yourpassword');
Cela va créer un mot de passe haché. Vous pouvez l'utiliser dans votre contrôleur ou même dans un modèle, par exemple, si un utilisateur soumet un mot de passe à l'aide d'un formulaire à votre contrôleur en utilisant la méthode POST
, vous pouvez le hacher en utilisant quelque chose comme ceci:
$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);
Ici $hashed
contiendra le mot de passe haché. Fondamentalement, vous le ferez lors de la création/enregistrement d'un nouvel utilisateur, par exemple, si un utilisateur soumet des détails tels que, name
, email
, username
et {[10] } etc en utilisant un formulaire, puis avant d'insérer les données dans la base de données, vous hacherez le mot de passe après avoir validé les données. Pour plus d'informations, lire la documentation.
Mise à Jour:
$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
Donc, vous allez insérer le $hashedPassword
dans la base de données. L'espoir, c'est clair maintenant, et si vous êtes encore confus alors je vous suggère de lire quelques tutoriels, regarder l'écran jette sur laracasts.com et tutsplus.com et aussi de lire un livre sur Laravel
, c'est un ebook gratuit, vous pouvez le télécharger.
Update: puisque OP
veut chiffrer manuellement le mot de passe en utilisant Laravel Hash
sans aucune classe ou formulaire, c'est une autre façon d'utiliser {[15] } à partir de l'invite de commande:
- accédez à votre invite de commande / terminal
- accédez à l'installation
Laravel
(répertoire racine de votre projet) - utilisez
cd <directory name>
et appuyez sur Entrée depuis l'invite de commande / terminal - ensuite, écrivez
php artisan tinker
et appuyez sur entrez - alors écrivez
echo Hash::make('somestring');
- Vous obtiendrez un mot de passe haché sur la console, Copiez-le et faites ce que vous voulez faire.
Mise À Jour (Laravel 5.x):
// Also one can use bcrypt
$password = bcrypt('JohnDoe');
Pour stocker le mot de passe dans la base de données, faites le hachage du mot de passe, puis enregistrez.
$password = Input::get('password_from_user');
$hashed = Hash::make($password); // save $hashed value
Pour vérifier le mot de passe, obtenez le mot de passe stocké du compte à partir de la base de données
// $user is database object
// $inputs is Input from user
if( \Illuminate\Support\Facades\Hash::check( $inputs['password'], $user['password']) == false) {
// Password is not matching
} else {
// Password is matching
}
La façade de hachage Laravel fournit un hachage bcrypt sécurisé pour stocker les mots de passe des utilisateurs.
L'utilisation de base nécessitait deux choses:
Incluez D'abord la façade dans votre fichier
use Illuminate\Support\Facades\Hash;
Et utilisez la méthode Make
pour générer un mot de passe.
$hashedPassword = Hash::make($request->newPassword);
Et quand vous voulez faire correspondre la chaîne hachée, vous pouvez utiliser le code ci-dessous:
Hash::check($request->newPasswordAtLogin, $hashedPassword)
Vous pouvez en savoir plus avec le lien du document Laravel ci-dessous pour le hachage: https://laravel.com/docs/5.5/hashing
Dans le BcryptHasher.php, vous pouvez trouver le code de hachage:
public function make($value, array $options = array())
{
$cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;
$hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
$hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
echo $value.' '.PASSWORD_BCRYPT.' '.$cost.' ';
echo $hash;die();
if ($hash === false)
{
throw new RuntimeException("Bcrypt hashing not supported.");
}
return $hash;
}
Si vous voulez comprendre comment fonctionne excatly laravel, vous pouvez consulter la classe complète sur Github: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
Mais fondamentalement, il y a trois méthodes PHP impliquées à ce sujet:
$pasword = 'user-password';
// To create a valid password out of laravel Try out!
$cost=10; // Default cost
$password = password_hash($pasword, PASSWORD_BCRYPT, ['cost' => $cost]);
// To validate the password you can use
$hash = '$2y$10$NhRNj6QF.Bo6ePSRsClYD.4zHFyoQr/WOdcESjIuRsluN1DvzqSHm';
if (password_verify($pasword, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
//Finally if you have a $hash but you want to know the information about that hash.
print_r( password_get_info( $password_hash ));
Le mot de passe haché est le même que laravel 5.x mot de passe bcrypt. Pas besoin de donner du sel et du coût, il prendra ses valeurs par défaut.
Ces méthodes ont été implémentées dans la classe laravel, mais si vous voulez en savoir plus veuillez consulter la documentation officielle: http://php.net/manual/en/function.password-hash.php
Ok, c'est un extrait de la fonction make dans hash.php
$work = str_pad(8, 2, '0', STR_PAD_LEFT);
// Bcrypt expects the salt to be 22 base64 encoded characters including
// dots and slashes. We will get rid of the plus signs included in the
// base64 data and replace them with dots.
if (function_exists('openssl_random_pseudo_bytes'))
{
$salt = openssl_random_pseudo_bytes(16);
}
else
{
$salt = Str::random(40);
}
$salt = substr(strtr(base64_encode($salt), '+', '.'), 0 , 22);
echo crypt('yourpassword', '$2a$'.$work.'$'.$salt);
Il suffit de copier / coller dans un fichier php et l'exécuter.