Я пытаюсь создать хешированный пароль для 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
хочет вручную зашифровать пароль с помощью LaravelHash
без какого-либо класса или формы, поэтому это альтернативный способ использованияartisan tinker
из командной строки:Laravel
установке (корневой каталог вашего проекта)cd <directory name>
и нажмите ввод из командной строки / терминалаphp artisan tinker
и нажмите вводecho Hash::make('somestring');
Обновление (Laravel 5.x):
// Also one can use bcrypt $password = bcrypt('JohnDoe');
источник
db
вам нужно его зашифровать, чтобы вы, используя простой пароль, зашифруете его,Hash::make('passwordstring');
а затем сохраните этот хешированный пароль в базе данных.Laravel 5 использует
bcrypt
. Так что вы тоже можете это сделать.$hashedpassword = bcrypt('plaintextpassword');
вывод которого вы можете сохранить в поле пароля таблицы базы данных.
Ссылка Fn: bcrypt
источник
check
метод:if (Hash::check('secret', $hashedPassword)) { // The passwords match... }
Ссылка: laravel.com/docs/5.1/hashing Изменить: не забудьте проголосовать за ответ, если он вам помог;)Фасад Laravel Hash обеспечивает безопасное хеширование Bcrypt для хранения паролей пользователей.
Для базового использования требовалось две вещи:
Сначала включите фасад в свой файл
use Illuminate\Support\Facades\Hash;
и используйте
Make
метод для генерации пароля.и если вы хотите сопоставить строку хеширования, вы можете использовать приведенный ниже код:
Вы можете узнать больше по ссылке на документ 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
Но в основном здесь задействованы три метода 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 ));
Хешированный пароль такой же, как пароль bcrypt laravel 5.x. Не нужно указывать соль и стоимость, она примет значения по умолчанию.
Эти методы были реализованы в классе laravel, но если вы хотите узнать больше, просмотрите официальную документацию: http://php.net/manual/en/function.password-hash.php
источник
Вы можете использовать следующее:
$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; }
источник
use Illuminate\Support\Facades\Hash; if(Hash::check($plain-text,$hashed-text)) { return true; } else { return false; }
например, $ plain-text = 'текст'; $ hashed-text = Hash :: make ('текст');
источник
Вот решение:
use Illuminate\Support\Facades\Hash; $password = request('password'); // get the value of password field $hashed = Hash::make($password); // encrypt the password
NB: Используйте код 1-й строки в самом начале вашего контроллера. И последнее, но не менее важное: используйте оставшиеся две строки кода внутри функции вашего контроллера, где вы хотите манипулировать данными после отправки from. Удачного кодирования :)
источник
Сравните пароль в 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"; }
Надеюсь, эта помощь вас порадует :)
источник
хорошо, это отрывок из функции 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 и запустите.
источник