web-dev-qa-db-fra.com

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 assistant de hachage, 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ù?

Edit: Je sais quel est le code mais je ne sais pas où et comment l'utiliser, il me renvoie le mot de passe haché. Si je reçois le mot de passe haché, je peux l'insérer manuellement dans la base de données

70
Graham

Hachage d'un mot de passe à l'aide de Bcrypt dans Laravel:

$password = Hash::make('yourpassword');

Cela créera 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é. En gros, vous le ferez lors de la création/de l'enregistrement d'un nouvel utilisateur. Ainsi, par exemple, si un utilisateur envoie des informations telles que, name, email, username et password etc en utilisant un formulaire, puis avant d'insérer les données dans la base de données, vous allez hacher le mot de passe après la validation des données. Pour plus d'informations, lisez 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. J'espère que c'est clair maintenant et si vous êtes toujours confus, alors je vous suggère de lire des tutoriels, de regarder des projections d'écran sur laracasts.com et tutsplus.com et aussi de lire un livre sur Laravel, ceci est un ebook gratuit , vous pouvez le télécharger.

Mise à jour: Étant donné que OP veut chiffrer manuellement le mot de passe en utilisant Laravel Hash sans classe ni formulaire, de sorte c'est une autre manière d'utiliser artisan tinker à partir de la commande Invite:

  1. Allez à votre commande Invite/terminal
  2. Accédez à l'installation Laravel (répertoire racine de votre projet).
  3. Utilisez cd <directory name> et appuyez sur Entrée à partir de la commande Invite/terminal
  4. Puis écrivez php artisan tinker et appuyez sur enter
  5. Puis écrivez echo Hash::make('somestring');
  6. Vous obtiendrez un mot de passe haché sur la console, le copierez et ferez ce que vous voulez faire.

Mise à jour (Laravel 5.x):

// Also one can use bcrypt
$password = bcrypt('JohnDoe');

150
The Alpha

Laravel 5 utilise bcrypt. Donc, vous pouvez le faire aussi.

$hashedpassword = bcrypt('plaintextpassword');

sortie que vous pouvez enregistrer dans le champ mot de passe de votre table de base de données.

Réf Fn: bcrypt

14
Rao

La façade Laravel Hash fournit un hachage Bcrypt sécurisé pour le stockage des mots de passe des utilisateurs.

L'utilisation de base nécessite deux choses:

Commencez par inclure la façade dans votre dossier

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 lorsque vous voulez faire correspondre la chaîne Hashed, vous pouvez utiliser le code ci-dessous:

Hash::check($request->newPasswordAtLogin, $hashedPassword)

Vous pouvez en apprendre plus avec le lien de document Laravel ci-dessous pour le hachage: https://laravel.com/docs/5.5/hashing

7
Prashant Barve

Pour stocker le mot de passe dans la base de données, faites un hash du mot de passe puis sauvegardez.

$password = Input::get('password_from_user'); 
$hashed = Hash::make($password); // save $hashed value

Pour vérifier le mot de passe, récupérez le mot de passe du compte dans 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 
}
4
Somnath Muluk

Vous pouvez utiliser les éléments suivants:

$hashed_password = Hash::make('Your Unhashed Password');

Vous pouvez trouver plus d'informations: ici

2
Chris G

Si vous voulez comprendre comment fonctionne laravel, vous pouvez consulter le cours complet sur Github: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php

Mais fondamentalement, il y a trois PHP méthodes impliquées dans ce processus:

$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/fr/function.password-hash .php

2
Jathin Prasad

Dans le fichier 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;
}
1
hendra1
use Illuminate\Support\Facades\Hash;
if(Hash::check($plain-text,$hashed-text))
    {
       return true;
    }
    else
    {
        return false;
    }

par exemple, $ plain-text = 'text'; $ hashed-text = Hash :: make ('text');

0
Dharmendra Patel

Compare le mot de passe dans laravel et dans Lumen:

Cela peut être possible que la fonction bcrypt ne fonctionne pas avec php7, alors vous pouvez utiliser le code ci-dessous dans laravel et Lumen selon vos besoins:

use Illuminate\Support\Facades\Hash;

$test = app('hash')->make("test");
if (Hash::check('test', $test)) {
   echo "matched";
} else {
   echo "no matched";
}

J'espère que cette aide vous rendra heureux :)

0
Kamlesh