РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
763 of 1392 menu

Метод isHashed

Метод isHashed класса Hash применяется для проверки, является ли переданная строка хешем, созданным с использованием стандартного драйвера хеширования Laravel (обычно Bcrypt). Метод принимает один обязательный параметр - строку для проверки, и возвращает логическое значение true, если строка является корректным хешем, и false в противном случае. Этот метод часто используется совместно с методом needsRehash для определения необходимости обновления хеша пользователя.

Синтаксис

<?php use Illuminate\Support\Facades\Hash; Hash::isHashed($value); ?>

Параметры:

  • $value (string) - строка, которую необходимо проверить на принадлежность к хешу.

Возвращаемое значение:

  • true, если строка является хешем, созданным системой Laravel, иначе false.

Пример использования с проверкой пароля

Рассмотрим типичный пример использования метода isHashed при проверке пароля пользователя. Предположим, у нас есть модель User с полем password, и мы хотим убедиться, что пароль уже захеширован перед его использованием в методе check:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Hash; use App\Models\User; use Illuminate\Http\Request; class AuthController extends Controller { public function login(Request $request) { $user = User::where('email', $request->email)->first(); if ($user && Hash::check($request->password, $user->password)) { if (Hash::isHashed($request->password)) { echo "Password is already hashed"; } else { echo "Password is not hashed"; } return; } echo "Invalid credentials"; } } ?>

Результат выполнения кода при правильных данных:

"Password is not hashed"

Пример проверки различных строк

Проверим, какие строки метод isHashed считает хешем:

<?php use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Route; Route::get('/check-hash', function () { $hashed = Hash::make('password123'); $plain = 'password123'; $invalid = 'not-a-hash'; $res = [ 'Hashed string' => Hash::isHashed($hashed), 'Plain string' => Hash::isHashed($plain), 'Invalid string' => Hash::isHashed($invalid), ]; print_r($res); }); ?>

Результат выполнения кода:

Array ( [Hashed string] => 1 [Plain string] => [Invalid string] => )

Как видно из примера, только строка, созданная с помощью Hash::make, возвращает true.

Пример с методом needsRehash

Метод isHashed часто используется в паре с needsRehash для проверки, нужно ли обновить хеш пользователя, например, при изменении алгоритма хеширования:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Hash; use App\Models\User; class UserController extends Controller { public function updatePassword(Request $request) { $user = User::find(1); if (Hash::isHashed($user->password)) { if (Hash::needsRehash($user->password)) { $user->password = Hash::make($user->password); $user->save(); echo "Password rehashed successfully"; } else { echo "Password does not need rehash"; } } else { echo "Password is not hashed, please hash it first"; } } } ?>

Результат выполнения кода:

"Password does not need rehash"

Смотрите также

  • метод make,
    который создает хеш из строки
  • метод check,
    который проверяет строку на соответствие хешу
  • метод needsRehash,
    который проверяет необходимость перехеширования
  • метод bcrypt,
    который является вспомогательной функцией для хеширования
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить