Laravelのハッシュパスワードを作成しようとしています。Laravelハッシュヘルパーを使用するように言われましたが、見つからないか、間違った方向を向いています。
Laravelハッシュパスワードを作成するにはどうすればよいですか?そして、どこ?
編集:コードが何であるかは知っていますが、どこでどのように使用するかわからないため、ハッシュ化されたパスワードが返されます。ハッシュ化されたパスワードを取得したら、手動でデータベースに挿入できます
Laravelのハッシュパスワードを作成しようとしています。Laravelハッシュヘルパーを使用するように言われましたが、見つからないか、間違った方向を向いています。
Laravelハッシュパスワードを作成するにはどうすればよいですか?そして、どこ?
編集:コードが何であるかは知っていますが、どこでどのように使用するかわからないため、ハッシュ化されたパスワードが返されます。ハッシュ化されたパスワードを取得したら、手動でデータベースに挿入できます
php artisan tinker
。で使用できます。例echo Hash::make('yourpassword')
回答:
でBcryptを使用してパスワードをハッシュするLaravel
:
$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');
db
するには暗号化する必要があるので、プレーンパスワードからを使用Hash::make('passwordstring');
して暗号化し、このハッシュ化されたパスワードをデータベースに保存します。
Laravel5はを使用しbcrypt
ます。だから、あなたもこれを行うことができます。
$hashedpassword = bcrypt('plaintextpassword');
その出力をデータベーステーブルのパスワードフィールドに保存できます。
Fn Ref:bcrypt
check
方法を使用する必要があります:if (Hash::check('secret', $hashedPassword)) { // The passwords match... }
参照:laravel.com/docs/5.1/hashing編集:答えが役に立った場合は、答えに賛成することを忘れないでください;)
Laravel Hashファサードは、ユーザーパスワードを保存するための安全な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.xbcryptパスワードと同じです。塩とコストを与える必要はありません、それはデフォルト値を取ります。
これらのメソッドは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');
解決策は次のとおりです。
use Illuminate\Support\Facades\Hash;
$password = request('password'); // get the value of password field
$hashed = Hash::make($password); // encrypt the password
注意:コントローラーの最初の行コードを使用してください。大事なことを言い忘れましたが、fromが送信された後、データを操作するコントローラーの関数内の残りの2行のコードを使用します。ハッピーコーディング:)
わかりました、これはhash.phpのmake関数からの抜粋です
$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);
それをコピーしてphpファイルに貼り付けて実行するだけです。