Как создать пароль хэширования laravel
Я пытаюсь создать хешированный пароль для Laravel. Теперь кто-то сказал мне использовать помощника хэша Laravel, но я не могу его найти или я искал неправильное направление.
Как создать пароль хэширования laravel? И где?
Изменить:
Я знаю, что такое код, но я не знаю, где и как его использовать, поэтому он возвращает мне хешированный пароль. Если я получу хешированный пароль, тогда я могу вручную вставить его в базу данных
Ответы
Ответ 1
Хеширование пароля с помощью 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>
и нажмите ввод из командной строки/терминала - Затем напишите
php artisan tinker
и нажмите ввод - Затем напишите
echo Hash::make('somestring');
- Вы получите хешированный пароль на консоли, скопируете его и затем сделаете все, что захотите.
Обновление (Laravel 5.x):
// Also one can use bcrypt
$password = bcrypt('JohnDoe');
Ответ 2
В Laravel 5 используется bcrypt
. Таким образом, вы тоже можете это сделать.
$hashedpassword = bcrypt('plaintextpassword');
вывод которого вы можете сохранить в поле пароля таблицы базы данных.
Fn Ссылка: bcrypt
Ответ 3
Фасад Laravel Hash обеспечивает безопасное хеширование 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
Ответ 4
Чтобы сохранить пароль в базе данных, введите хэш пароля и затем сохраните.
$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
}
Ответ 5
Вы можете использовать следующее:
$hashed_password = Hash::make('Your Unhashed Password');
Вы можете найти дополнительную информацию: здесь
Ответ 6
Если вы хотите понять, как работает 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 = '$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
Ответ 7
В 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;
}
Ответ 8
сразу вы можете сгенерировать с помощью Convert-to-md5.xyz
Ответ 9
Сравните пароль в 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";
}
Надеюсь, это поможет порадует вас :)
Ответ 10
use Illuminate\Support\Facades\Hash;
if(Hash::check($plain-text,$hashed-text))
{
return true;
}
else
{
return false;
}
eg- $ plain-text = 'text'; $ Хэшируются-текст = Hash :: сделать ( 'текст');
Ответ 11
ok, это выдержка из функции make в 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);
Просто скопируйте/вставьте его в файл php и запустите его.