Laravelのハッシュ化されたパスワードを作成しようとしています。誰かがLaravelハッシュヘルパーを使用するように言ったが、見つけられないように見えるか、間違った方向を向いている。
laravelハッシュパスワードを作成するにはどうすればよいですか?そして、どこ?
編集:コードが何であるかは知っていますが、どこでどのように使用するかわかりませんので、ハッシュ化されたパスワードを返します。ハッシュされたパスワードを取得したら、手動でデータベースに挿入できます
Laravel
でBcryptを使用してパスワードをハッシュする:
$password = Hash::make('yourpassword');
これにより、ハッシュ化されたパスワードが作成されます。たとえば、ユーザーがフォームを使用してパスワードをPOST
メソッドを使用してコントローラーに送信する場合、コントローラーまたはモデルで使用できます。次のような方法でハッシュできます。
$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);
ここで、$hashed
にはハッシュされたパスワードが含まれます。基本的に、新しいユーザーを作成/登録するときに行うので、たとえば、ユーザーがフォームを使用して、name
、email
、username
、password
などの詳細を送信すると、データベースにデータを挿入する前に、 'データを検証した後、パスワードをハッシュします。詳細については、 ドキュメントを読む 。
更新:
$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
したがって、データベースに$hashedPassword
を挿入します。希望が明確になったので、まだ混乱している場合は、チュートリアルを読んで、 laracasts.com および tutsplus.com のスクリーンキャストをご覧になることをお勧めします。 Laravel
の本、 これは無料の電子ブックです 、ダウンロードできます。
更新:OP
はLaravel Hash
を使用してクラスまたはフォームなしでパスワードを手動で暗号化するため、これはartisan tinker
を使用する代替方法ですコマンド・プロンプト:
Laravel
インストール(プロジェクトのルートディレクトリ)に移動しますcd <directory name>
を使用し、コマンドプロンプト/端末からEnterキーを押しますphp artisan tinker
を書いてEnterを押しecho Hash::make('somestring');
を記述します// Also one can use bcrypt
$password = bcrypt('JohnDoe');
Laravel 5はbcrypt
を使用します。だから、あなたもこれを行うことができます。
$hashedpassword = bcrypt('plaintextpassword');
データベーステーブルのパスワードフィールドに保存できる出力。
Fn Ref: bcrypt
Laravelハッシュファサードは、ユーザーパスワードを保存するための安全なBcryptハッシュを提供します。
基本的な使用には2つのことが必要です。
まず、ファイルにファサードを含めます
use Illuminate\Support\Facades\Hash;
Make
メソッドを使用してパスワードを生成します。
$hashedPassword = Hash::make($request->newPassword);
ハッシュされた文字列と一致させたい場合は、次のコードを使用できます。
Hash::check($request->newPasswordAtLogin, $hashedPassword)
以下のLaravelドキュメントリンクで詳細を確認できます: 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
}
laravelがどのように機能するかを理解したい場合は、Githubの完全なクラスを確認できます。 https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
ただし、基本的には3つのPHPメソッドが関係しています。
$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 ));
ハッシュされたパスワードは、laravel 5.x bcryptパスワードと同じです。ソルトとコストを指定する必要はありません。デフォルト値が使用されます。
これらのメソッドはlaravelクラスに実装されていますが、詳細を知りたい場合は公式ドキュメントを参照してください: http://php.net/manual/en/function.password-hash .php
BcryptHasher.phpでハッシュコードを見つけることができます。
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;
}
例:$ plain-text = 'text'; $ hashed-text = Hash :: make( 'text');
laravelとLumenのパスワードを比較:
これは、bcrypt関数がphp7で動作しない可能性があるため、要件に応じてlaravelおよびLumenの以下のコードを使用できます。
use Illuminate\Support\Facades\Hash;
$test = app('hash')->make("test");
if (Hash::check('test', $test)) {
echo "matched";
} else {
echo "no matched";
}
この助けがあなたを幸せにすることを願っています:)