Sto cercando di creare una password con hash per Laravel. Ora qualcuno mi ha detto di usare Laravel hash helper ma non riesco a trovarlo o sto guardando nella direzione sbagliata.
Come posso creare una laravel hash password? E dove?
Modifica: so qual è il codice ma non so dove e come utilizzarlo, quindi mi restituisce la password con hash. Se ottengo la password con hash, posso inserirla manualmente nel database
Hashing di una password usando Bcrypt in Laravel
:
$password = Hash::make('yourpassword');
Questo creerà una password con hash. È possibile utilizzarlo nel controller o anche in un modello, ad esempio, se un utente invia una password utilizzando un modulo al controller utilizzando il metodo POST
, è possibile eseguire l'hash utilizzando qualcosa del genere:
$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);
Qui, $hashed
Conterrà la password con hash. Fondamentalmente, lo farai durante la creazione/registrazione di un nuovo utente, quindi, ad esempio, se un utente invia dettagli come name
, email
, username
e password
etc utilizzando un modulo, quindi prima di inserire i dati nel database, avrai la password di hash dopo aver convalidato i dati. Per ulteriori informazioni, leggi la documentazione .
Aggiornamento:
$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
Quindi, inserirai $hashedPassword
Nel database. Spero, sia chiaro ora e se sei ancora confuso, ti consiglio di leggere alcuni tutorial, guardare alcune schermate su laracasts.com e tutsplus.com e leggere anche un prenota su Laravel
, questo è un ebook gratuito , puoi scaricarlo.
Aggiornamento: Poiché OP
desidera crittografare manualmente la password utilizzando Laravel Hash
senza qualsiasi classe o modulo, quindi questo è un modo alternativo usando artisan tinker
dal prompt dei comandi:
Laravel
(la directory principale del progetto)cd <directory name>
E premi invio dal comando Prompt/terminalephp artisan tinker
E premi Invioecho Hash::make('somestring');
// Also one can use bcrypt
$password = bcrypt('JohnDoe');
Laravel 5 utilizza bcrypt
. Quindi, puoi farlo anche tu.
$hashedpassword = bcrypt('plaintextpassword');
output del quale è possibile salvare nel campo password della tabella del database.
Rif. Fn: criptato
La facciata Laravel Hash fornisce hash Bcrypt sicuro per la memorizzazione delle password degli utenti.
L'utilizzo di base ha richiesto due cose:
Per prima cosa includi la facciata nel tuo file
use Illuminate\Support\Facades\Hash;
e usa il metodo Make
per generare la password.
$hashedPassword = Hash::make($request->newPassword);
e quando si desidera abbinare la stringa con hash è possibile utilizzare il codice seguente:
Hash::check($request->newPasswordAtLogin, $hashedPassword)
Puoi saperne di più con il Laravel link del documento qui sotto per l'hashing: https://laravel.com/docs/5.5/hashing
$password = Input::get('password_from_user');
$hashed = Hash::make($password); // save $hashed value
// $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
}
È possibile utilizzare quanto segue:
$hashed_password = Hash::make('Your Unhashed Password');
Puoi trovare ulteriori informazioni: qui
Se vuoi capire come funziona excatly laravel puoi rivedere la classe completa su Github: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
Ma sostanzialmente ci sono tre PHP coinvolti in questo:
$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 ));
La password con hash è uguale a laravel 5.x bcrypt password. Non c'è bisogno di dare sale e costi, prenderà i suoi valori di default.
Tali metodi sono stati implementati nella classe laravel, ma se vuoi saperne di più consulta la documentazione ufficiale: http://php.net/manual/en/function. password hash.php
In BcryptHasher.php puoi trovare il codice hash:
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;
}
use Illuminate\Support\Facades\Hash;
if(Hash::check($plain-text,$hashed-text))
{
return true;
}
else
{
return false;
}
ad es. $ plain-text = 'text'; $ Hash-text = Hash :: make ( 'testo');
Confronta la password in laravel e Lumen:
Questo potrebbe essere possibile che la funzione bcrypt non funzioni con php7, quindi puoi usare il codice seguente in laravel e Lumen secondo i tuoi requisiti:
use Illuminate\Support\Facades\Hash;
$test = app('hash')->make("test");
if (Hash::check('test', $test)) {
echo "matched";
} else {
echo "no matched";
}
Spero che questo aiuto ti renda felice :)