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

Класс Hash

Класс Hash используется для безопасного хеширования паролей в Laravel. Он предоставляет простой интерфейс для работы с алгоритмом Bcrypt, который является стандартом для хранения паролей. Основными методами класса являются make для создания хеша, check для проверки пароля, needsRehash для определения необходимости перехеширования и isHashed для проверки, является ли строка хешем.

Синтаксис

<?php use Illuminate\Support\Facades\Hash; // Создание хеша Hash::make($password); // Проверка пароля Hash::check($password, $hashedValue); // Проверка необходимости перехеширования Hash::needsRehash($hashedValue); // Проверка, является ли строка хешем Hash::isHashed($value); ?>

Пример использования метода make

Давайте создадим хеш пароля для нового пользователя:

<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; class UserController extends Controller { public function store(Request $request) { $user = new User(); $user->name = $request->name; $user->email = $request->email; $user->password = Hash::make($request->password); $user->save(); echo "User created successfully"; } } ?>

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

"User created successfully"

Пример использования метода check

Давайте проверим, соответствует ли введенный пароль сохраненному хешу:

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

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

"Login successful"

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

"Invalid credentials"

Пример использования метода needsRehash

Давайте проверим, нужно ли перехешировать пароль пользователя при изменении настроек хеширования:

<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Support\Facades\Hash; class UserController extends Controller { public function updatePasswordHash(User $user) { if (Hash::needsRehash($user->password)) { $user->password = Hash::make($user->password); $user->save(); echo "Password rehashed successfully"; } else { echo "No rehash needed"; } } } ?>

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

"No rehash needed"

Пример использования метода isHashed

Давайте проверим, является ли строка хешем пароля:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Hash; class ValidationController extends Controller { public function validateHash() { $plainText = 'password123'; $hash = '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'; $res1 = Hash::isHashed($plainText); $res2 = Hash::isHashed($hash); echo "Plain text: " . ($res1 ? 'true' : 'false'); echo "Hash: " . ($res2 ? 'true' : 'false'); } } ?>

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

"Plain text: false" "Hash: true"

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

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