Вступление
Hash
Фасад Laravel обеспечивает безопасное хеширование Bcrypt и Argon2 для хранения паролей пользователей. Если вы используете встроенные классы LoginController
и RegisterController
классы, включенные в ваше приложение Laravel, они будут использовать Bcrypt для регистрации и аутентификации по умолчанию.
Bcrypt - отличный выбор для хеширования паролей, поскольку его «коэффициент работы» можно регулировать, что означает, что время, необходимое для генерации хэша, может быть увеличено при увеличении мощности оборудования.
Конфигурация
Драйвер хеширования по умолчанию для вашего приложения настраивается в файле конфигурации. В настоящее время поддерживаются три драйвера: Bcrypt и Argon2 (варианты Argon2i и Argon2id).config/hashing.php
Драйвер Argon2i требует PHP 7.2.0 или выше, а драйвер Argon2id требует PHP 7.3.0 или выше.
Основное использование
Вы можете хешировать пароль, вызвав make
метод на Hash
фасаде:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;
class UpdatePasswordController extends Controller
{
/**
* Update the password for the user.
*
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
// Validate the new password length...
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
Регулировка фактора работы Bcrypt
Если вы используете алгоритм Bcrypt, make
метод позволяет вам управлять коэффициентом работы алгоритма, используя rounds
опцию; однако по умолчанию приемлемо для большинства приложений:
$hashed = Hash::make('password', [
'rounds' => 12
]);
Регулировка рабочего коэффициента Argon2
Если вы используете алгоритм Argon 2, то make
метод позволяет управлять фактором работы алгоритма с использованием memory
, time
и threads
варианты; однако значения по умолчанию приемлемы для большинства приложений:
$hashed = Hash::make('password', [
'memory' => 1024,
'time' => 2,
'threads' => 2,
]);
Для получения дополнительной информации об этих опциях, ознакомьтесь с официальной документацией PHP .
Проверка пароля против хэша
Этот check
метод позволяет вам проверить, соответствует ли данная строка открытого текста данному хешу. Однако, если вы используете LoginController
включенный в Laravel , вам, вероятно, не нужно будет использовать это напрямую, так как этот контроллер автоматически вызывает этот метод:
if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}
Проверка необходимости перефразирования пароля
needsRehash
Функция позволяет определить , если коэффициент работы используется Hasher изменился , так как пароль был хэшируется:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}
0 комментариев