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

Middleware guest

Middleware guest применяется к маршрутам и контроллерам для ограничения доступа только для гостей (неавторизованных пользователей). Если пользователь уже авторизован, он будет перенаправлен на маршрут 'home' или на указанный в параметрах. Это полезно для страниц входа, регистрации и восстановления пароля.

Синтаксис

<?php // В маршруте Route::get('/login', [LoginController::class, 'showLoginForm'])->middleware('guest'); ?>

Пример

Создадим маршрут для страницы входа с применением middleware guest:

<?php use App\Http\Controllers\Auth\LoginController; use Illuminate\Support\Facades\Route; Route::get('/login', [LoginController::class, 'showLoginForm'])->middleware('guest')->name('login'); Route::post('/login', [LoginController::class, 'login']); ?>

Пример

Группируем несколько маршрутов для гостей с помощью метода middleware:

<?php use App\Http\Controllers\Auth\RegisterController; use App\Http\Controllers\Auth\ForgotPasswordController; use Illuminate\Support\Facades\Route; Route::middleware('guest')->group(function () { Route::get('/register', [RegisterController::class, 'showRegistrationForm']); Route::post('/register', [RegisterController::class, 'register']); Route::get('/forgot-password', [ForgotPasswordController::class, 'showLinkRequestForm']); }); ?>

Пример

Изменение маршрута для перенаправления авторизованных пользователей:

<?php use Illuminate\Support\Facades\Route; Route::get('/login', function () { return view('auth.login'); })->middleware('guest')->name('login'); ?>

По умолчанию авторизованные пользователи перенаправляются на маршрут 'home'. Это поведение можно изменить в классе RedirectIfAuthenticated:

<?php namespace App\Http\Middleware; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class RedirectIfAuthenticated { public function handle(Request $request, \Closure $next, string ...$guards) { $guards = empty($guards) ? [null] : $guards; foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { return redirect('/dashboard'); } } return $next($request); } } ?>

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

"redirect to /dashboard"

Пример

Использование middleware guest в контроллере через конструктор:

<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { public function __construct() { $this->middleware('guest')->except('logout'); } public function showLoginForm() { return view('auth.login'); } public function login(Request $request) { $credentials = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required'], ]); if (Auth::attempt($credentials)) { $request->session()->regenerate(); return redirect()->intended('dashboard'); } return back()->withErrors([ 'email' => 'The provided credentials do not match our records.', ]); } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/'); } } ?>

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

  • метод auth,
    который требует авторизации для доступа к маршруту
  • метод can,
    который проверяет права пользователя на действие
  • метод verified,
    который требует подтверждения email
  • метод password-confirm,
    который требует подтверждения пароля перед выполнением действия
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить