{{TOC}} {{DOCVER 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=cdc24ba7426c5b11eb4d050706bd78c3ea4913cc 19.06.2016 20:08:01, 5.0=f6e862ba51a97f2bf9865f35fd5c522c14af93a1 31.07.2015 15:36:24}} == Введение == ((/docs/v5/facades Фасад)) %%(t)Hash%% в Laravel обеспечивает надёжное Bcrypt-хеширование для хранения паролей пользователей. %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) Если вы используете встроенные классы %%(t)LoginController%% и %%(t)RegisterController%%, включённые в ваше Laravel-приложение, они будут автоматически использовать Bcrypt для регистрации и авторизации. %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=cdc24ba7426c5b11eb4d050706bd78c3ea4913cc 19.06.2016 20:08:01, 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11) Если вы используете контроллер %%(t)AuthController%%, включённый в ваше Laravel-приложение, он будет автоматически использовать Bcrypt для регистрации и авторизации. %% Bcrypt - отличный выбор для хеширования паролей, потому что сложность его вычисления настраивается. Это значит, что можно увеличить время генерации хеша при увеличении мощности железа. %%(DOCNEW 5.0=f6e862ba51a97f2bf9865f35fd5c522c14af93a1 31.07.2015 15:36:24) Также, пользовательская служба %%(t)Registrar%%, поставляемая с Laravel, выполняет вызов соответствующей функции %%bcrypt%% для хеширования сохранённых паролей. %% == Основы использования == Вы можете хешировать пароль, вызвав метод %%make()%% фасада %%(t)Hash%%: %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) ~%% namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use App\Http\Controllers\Controller; class UpdatePasswordController extends Controller { /** * Обновление пароля пользователя. * * @param Request $request * @return Response */ public function update(Request $request) { // Проверка длины пароля... $request->user()->fill([ 'password' => Hash::make($request->newPassword) ])->save(); } } ~%% %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=f60f8b3697b3ffe381df4ddb7e2875ffce940643 1.04.2016 17:39:10) ~%% namespace App\Http\Controllers; use Hash; use App\User; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class UserController extends Controller { /** * Обновление пароля пользователя. * * @param Request $request * @param int $id * @return Response */ public function updatePassword(Request $request, $id) { $user = User::findOrFail($id); // Проверка длины пароля... $user->fill([ 'password' => Hash::make($request->newPassword) ])->save(); } ~%% Вы также можете использовать глобальную вспомогательную функцию %%bcrypt%%: ~%% $password = bcrypt('секрет'); ~%% %% %%(DOCNEW 5.0=f6e862ba51a97f2bf9865f35fd5c522c14af93a1 31.07.2015 15:36:24) ~%% $password = Hash::make('секрет'); ~%% %% **Сверка пароля с хешем** %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=f60f8b3697b3ffe381df4ddb7e2875ffce940643 1.04.2016 17:39:10) Метод %%check()%% позволяет сверить текстовую строку и имеющийся хеш. Но если вы используете ((/docs/v5/authentication встроенный в Laravel)) %%(t)LoginController%% (для версии 5.2 и ранее - %%(t)AuthController%%), то вам не нужно использовать этот метод, так как этот контроллер автоматически вызывает его: %% %% if (Hash::check('секрет', $hashedPassword)) { // Пароль верный... } %% **Проверка необходимости повторного хеширования пароля** Функция %%needsRehash%% позволяет определить, изменилась ли используемая сложность хеширования с момента создания хеша для пароля: %% if (Hash::needsRehash($hashed)) { $hashed = Hash::make('секрет'); } %%