Ich versuche ein Hash-Passwort für Laravel zu erstellen. Jetzt hat mir jemand gesagt, ich soll den Laravel-Hash-Helfer verwenden, aber ich kann ihn anscheinend nicht finden oder schaue in die falsche Richtung.
Wie erstelle ich ein Laravel-Hash-Passwort? Und wo?
Bearbeiten: Ich weiß, was der Code ist, aber ich weiß nicht, wo und wie ich ihn verwenden soll, damit ich das Hash-Passwort zurück bekomme. Wenn ich das Hash-Passwort erhalte, kann ich es manuell in die Datenbank einfügen
php artisan tinker
. ZBecho Hash::make('yourpassword')
Antworten:
Hashing eines Passworts mit Bcrypt in
Laravel
:$password = Hash::make('yourpassword');
Dadurch wird ein Hash-Passwort erstellt. Sie können es in Ihrem Controller oder sogar in einem Modell verwenden. Wenn ein Benutzer beispielsweise ein Kennwort mithilfe eines Formulars mithilfe der
POST
Methode an Ihren Controller sendet , können Sie es mit folgender Methode hashen:$password = Input::get('passwordformfield'); // password is form field $hashed = Hash::make($password);
Hier
$hashed
wird das Hash-Passwort enthalten. Grundsätzlich werden Sie es tun , wenn die Erstellung / Registrierung eines neuen Benutzers, so zum Beispiel, wenn ein Benutzer sendet Details wiename
,email
,username
undpassword
usw. ein Formular verwenden, dann bevor Sie fügen die Daten in die Datenbank, werden hash Sie die Passwort nach Validierung der Daten. Weitere Informationen finden Sie in der Dokumentation .Aktualisieren:
$password = 'JohnDoe'; $hashedPassword = Hash::make($password); echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
Also werden Sie die
$hashedPassword
in die Datenbank einfügen . Hoffe, es ist jetzt klar und wenn Sie immer noch verwirrt sind, empfehle ich Ihnen, einige Tutorials zu lesen, einige Screenshots auf laracasts.com und tutsplus.com anzusehen und auch ein Buch darüber zu lesenLaravel
. Dies ist ein kostenloses E-Book . Sie können es herunterladen.Update: Da
OP
das Passwort mit LaravelHash
ohne Klasse oder Formular manuell verschlüsselt werden soll, ist dies eine alternative Möglichkeit, dieartisan tinker
Eingabeaufforderung zu verwenden:Laravel
Installation (Stammverzeichnis Ihres Projekts).cd <directory name>
die Eingabetaste / das Terminal und drücken Sie die Eingabetastephp artisan tinker
und drücken Sie die Eingabetasteecho Hash::make('somestring');
Update (Laravel 5.x):
// Also one can use bcrypt $password = bcrypt('JohnDoe');
quelle
db
, müssen Sie es verschlüsseln. Mit einem einfachen Passwort verschlüsseln Sie esHash::make('passwordstring');
dann und speichern dieses Hash-Passwort in der Datenbank.Laravel 5 verwendet
bcrypt
. Sie können dies also auch tun.$hashedpassword = bcrypt('plaintextpassword');
Ausgabe, die Sie im Kennwortfeld Ihrer Datenbanktabelle speichern können.
Fn Ref: bcrypt
quelle
check
Methode verwenden:if (Hash::check('secret', $hashedPassword)) { // The passwords match... }
Ref: laravel.com/docs/5.1/hashing Bearbeiten: Vergessen Sie nicht, die Antwort zu verbessern, wenn es Ihnen geholfen hat;)Die Laravel Hash-Fassade bietet sicheres Bcrypt-Hashing zum Speichern von Benutzerkennwörtern.
Die grundlegende Verwendung erforderte zwei Dinge:
Nehmen Sie zuerst die Fassade in Ihre Datei auf
use Illuminate\Support\Facades\Hash;
und verwenden Sie die
Make
Methode, um ein Passwort zu generieren.und wenn Sie mit der Hashed-Zeichenfolge übereinstimmen möchten, können Sie den folgenden Code verwenden:
Weitere Informationen finden Sie unter dem folgenden Link zum Laravel-Dokument für Hashing: https://laravel.com/docs/5.5/hashing
quelle
Um das Passwort in der Datenbank zu speichern, machen Sie einen Hash des Passworts und speichern Sie es.
$password = Input::get('password_from_user'); $hashed = Hash::make($password); // save $hashed value
Um das Passwort zu überprüfen, speichern Sie das Passwort des Kontos aus der Datenbank
// $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 }
quelle
Wenn Sie verstehen möchten, wie genau Laravel funktioniert, können Sie die gesamte Klasse auf Github überprüfen: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
Grundsätzlich gibt es jedoch drei PHP-Methoden:
$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 ));
Das gehashte Passwort ist dasselbe wie das Verschlüsselungspasswort von laravel 5.x. Sie müssen kein Salz und keine Kosten angeben, sondern nehmen die Standardwerte an.
Diese Methoden wurden in der Laravel-Klasse implementiert. Wenn Sie jedoch mehr erfahren möchten, lesen Sie bitte die offizielle Dokumentation: http://php.net/manual/en/function.password-hash.php
quelle
Sie können Folgendes verwenden:
$hashed_password = Hash::make('Your Unhashed Password');
Weitere Informationen finden Sie hier
quelle
In der BcryptHasher.php finden Sie den Hash-Code:
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; }
quelle
use Illuminate\Support\Facades\Hash; if(Hash::check($plain-text,$hashed-text)) { return true; } else { return false; }
eg- $ plain-text = 'text'; $ hashed-text = Hash :: make ('text');
quelle
Hier ist die Lösung:
use Illuminate\Support\Facades\Hash; $password = request('password'); // get the value of password field $hashed = Hash::make($password); // encrypt the password
NB: Verwenden Sie den Code der ersten Zeile ganz am Anfang Ihres Controllers. Verwenden Sie zu guter Letzt die restlichen zwei Codezeilen in der Funktion Ihres Controllers, in der Sie nach dem Senden des Von Daten bearbeiten möchten. Viel Spaß beim Codieren :)
quelle
Passwort in Laravel und Lumen vergleichen:
Dies kann möglich sein, dass die bcrypt-Funktion mit php7 nicht funktioniert. Dann können Sie den folgenden Code in Laravel und Lumen gemäß Ihren Anforderungen verwenden:
use Illuminate\Support\Facades\Hash; $test = app('hash')->make("test"); if (Hash::check('test', $test)) { echo "matched"; } else { echo "no matched"; }
Ich hoffe, diese Hilfe wird dich glücklich machen :)
quelle
ok, dies ist ein Auszug aus der make-Funktion in 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);
Kopieren Sie es einfach in eine PHP-Datei und führen Sie es aus.
quelle