Как создать хешированный пароль фреймворк Laravel
Я пытаюсь создать хэшированный пароль для Laravel. Теперь кто-то сказал мне использовать Laravel hash helper, но я не могу его найти, или я смотрю в неправильном направлении.
Как создать хэшированный пароль laravel? И где же?
изменить:
Я знаю, что такое код, но я не знаю, где и как его использовать, поэтому он возвращает мне хэшированный пароль. Если я получу хэшированный пароль, то я могу вручную вставить его в базу данных
8 ответов:
хэширование пароля с помощью Bcrypt в
Laravel:$password = Hash::make('yourpassword');это создаст хэшированный пароль. Вы можете использовать его в своем контроллере или даже в модели, например, если пользователь отправляет пароль с помощью формы на ваш контроллер с помощью
POSTметод, то вы можете хэшировать его, используя что-то вроде этого:$password = Input::get('passwordformfield'); // password is form field $hashed = Hash::make($password);здесь
$hashedбудет содержать хэш-пароль. В принципе, вы будете делать это при создании / регистрации нового пользователя, так, например, если пользователь отправляет такие детали, как,name,usernameиpasswordetc с помощью формы, а затем, прежде чем вставить данные в базу данных, вы будете хэшировать пароль после проверки данных. Для получения дополнительной информации читать документацию.обновление:
$password = 'JohnDoe'; $hashedPassword = Hash::make($password); echo $hashedPassword; // y$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3IuyИтак, вы вставите
$hashedPasswordв базу данных. Надеюсь, теперь все ясно, и если вы все еще смущены, я предлагаю вам прочитать некоторые учебники, посмотреть некоторые экранные слепки laracasts.com и tutsplus.com а также прочитать книгу оLaravel,это бесплатная электронная книга, вы можете скачать ее.обновление: С
OPхочет вручную зашифровать пароль с помощью LaravelHashбез какого-либо класса или формы, так что это альтернативный способ с помощьюartisan tinkerиз командной строки:
- перейдите в командную строку/терминал
- перейти к
Laravelустановка (корневой каталог вашего проекта)- использовать
cd <directory name>и нажмите enter из командной строки / терминала- потом пиши
php artisan tinkerи нажмите enter- потом пиши
echo Hash::make('somestring');- вы получите хэшированный пароль на консоли, скопируйте его, а затем делайте все, что вы хотите сделать.
Обновление (Laravel 5.x):
// Also one can use bcrypt $password = bcrypt('JohnDoe');
Laravel 5 использует
bcrypt. Так что, Вы тоже можете это сделать.$hashedpassword = bcrypt('plaintextpassword');вывод которого можно сохранить в поле пароля таблицы базы данных.
Fn Ref:осуществляется
хранить пароль в базе данных, сделать хэш пароля, а затем сохранить.
$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 обеспечивает безопасное хэширование Bcrypt для хранения паролей пользователей.
основное использование требуется две вещи:
сначала включите фасад в свой файл
use Illuminate\Support\Facades\Hash;и использовать
Makeметод для генерации пароля.$hashedPassword = Hash::make($request->newPassword);и когда вы хотите, чтобы соответствовать хэш-строку вы можете использовать следующий код:
Hash::check($request->newPasswordAtLogin, $hashedPassword)вы можете узнать больше с помощью ссылки на документ Laravel ниже для Хэширование: https://laravel.com/docs/5.5/hashing
вы можете использовать следующие:
$hashed_password = Hash::make('Your Unhashed Password');вы можете найти более подробную информацию: здесь
в 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; }
Если вы хотите понять, как excatly laravel работает, вы можете просмотреть полный класс на Github:https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
но в основном есть три метода 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 = 'y$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.х пароля осуществляется. Не нужно давать соль и стоимость, она примет свои значения по умолчанию.
эти методы были реализованы в классе laravel, но если вы хотите узнать больше, пожалуйста, ознакомьтесь с официальной документацией: http://php.net/manual/en/function.password-hash.php
ок, это выписка из функции make в хэше.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', 'a$'.$work.'$'.$salt);просто копировать/вставить его в php-файл и запустите его.
Comments