В Laravel существует несколько способов ограничить доступ к определенным маршрутам только для авторизованных пользователей. Один из самых простых способов - использование middleware.
Middleware в Laravel - это слой обработки запроса между входящим запросом и маршрутом. Мы можем определить свой middleware, который будет проверять, что пользователь авторизован перед тем, как позволить ему перейти по ссылке.
Вначале мы создаем middleware с помощью команды Artisan:
php artisan make:middleware CheckAuth
После выполнения команды будет создан файл CheckAuth.php
в директории app/Http/Middleware
. В файле CheckAuth.php
вам нужно реализовать метод handle
:
public function handle($request, Closure $next) { if (Auth::check()) { return $next($request); } abort(403, 'Access denied'); }
В этом методе мы проверяем, авторизован ли пользователь (Auth::check()
) и, если да, пропускаем его дальше (return $next($request)
). В противном случае вызываем ошибку 403 (Доступ запрещен) (abort(403, 'Access denied')
).
Затем, чтобы применить middleware к определенному маршруту, вы можете использовать метод middleware
в вашем файле маршрутов (routes/web.php
):
Route::get('/my-protected-page', function() { // Код обработки страницы })->middleware('check.auth');
В приведенном выше примере мы использовали middleware с именем check.auth
. Вы можете заменить его на любое другое имя, если предпочитаете.
Теперь, когда пользователь пытается получить доступ к маршруту /my-protected-page
, Laravel автоматически вызывает middleware check.auth
перед тем, как позволить пользователю перейти по ссылке. Если пользователь не авторизован, он будет перенаправлен на страницу авторизации.
Кроме того, если вам нужно ограничить доступ к нескольким маршрутам в вашем приложении только для авторизованных пользователей, вам не придется повторять один и тот же middleware для каждого маршрута. Вместо этого вы можете добавить middleware ко всей группе маршрутов:
Route::middleware(['check.auth'])->group(function () { Route::get('/my-protected-page', function() { // Код обработки страницы }); });
Таким образом, все маршруты, определенные внутри group
, будут автоматически защищены с помощью middleware check.auth
.