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

Метод hasUser

Метод hasUser класса Auth проверяет, был ли установлен объект пользователя в текущий экземпляр аутентификации через методы login, loginUsingId или setUser. В отличие от метода check, который проверяет наличие аутентифицированного пользователя в сессии, hasUser проверяет только локально установленного пользователя в памяти текущего запроса. Метод возвращает true, если пользователь установлен, и false в противном случае. Этот метод полезен при работе с кастомной аутентификацией или при проверке состояния авторизации без обращения к хранилищу сессий.

Синтаксис

<?php use Illuminate\Support\Facades\Auth; $hasUser = Auth::hasUser(); ?>

Пример

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

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Models\User; class AuthController extends Controller { public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { $hasUser = Auth::hasUser(); echo $hasUser ? 'true' : 'false'; } } } ?>

Результат выполнения кода при успешной аутентификации:

"true"

Пример

Сравним работу методов hasUser и check при установке пользователя вручную:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Auth; use App\Models\User; class UserController extends Controller { public function checkUser() { $user = User::find(1); Auth::setUser($user); $hasUser = Auth::hasUser(); // true $isChecked = Auth::check(); // false echo "hasUser: " . ($hasUser ? 'true' : 'false') . "\n"; echo "check: " . ($isChecked ? 'true' : 'false'); } } ?>

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

"hasUser: true" "check: false"

Как видно из примера, hasUser возвращает true, так как пользователь установлен через setUser, а check возвращает false, потому что аутентификация не сохранена в сессии.

Пример

Используем hasUser для проверки перед выполнением действия в middleware:

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class CheckUserMiddleware { public function handle(Request $request, Closure $next) { if (!Auth::hasUser()) { return redirect('/login'); } return $next($request); } } ?>

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

  • метод check,
    который проверяет аутентификацию пользователя в сессии
  • метод user,
    который возвращает текущего аутентифицированного пользователя
  • метод setUser,
    который устанавливает пользователя в текущий экземпляр Auth
  • метод guest,
    который проверяет, является ли текущий пользователь гостем
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить