Для начала давайте разберемся с разницей между авторизацией и аутентификацией в Laravel.
Аутентификация (authentication) это процесс логина (захода) на сайт, любым способом. В процессе аутентификации мы гостя идентифицируем на сайте, после аутентификации хиты на странице делает уже не просто какой то рандомный IP адрес, а прямо конкретный пользователь, информация о котором хранится у нас в базе. В интерфейсе появляется кнопка «выход» и становятся доступны маршруты для авторизованных пользователей. Т.е. превращение анонима в известного пользователя, это процесс аутентификации.
Авторизация (authorization) в Laravel это процесс проверки какой то конкретной возможности, доступности какого либо действия для пользователя. Authorization дословно переводится с английского как «разрешение». Действие которое мы разрешаем может быть абсолютно любым.
Если подходить ближе к практическим примерам, то реальной «возможностью» может быть например «возможность создания статьи». Вам в контроллер прилетает POST запрос, в котором лежит содержимое статьи, и в ответ на этот запрос вам нужно добавить статью и послать «ок», либо ответить ошибкой «доступ запрещен». Вам нужно разрешить или запретить создание для пользователя, или другими словами авторизовать действие. Вот именно тут и начинают работать политики и гейты.
Laravel уже содержит пакеты аутентификации и авторизации пользователя, это пакеты laravel/ui
, Passport
и Sanctum
. Однако, для создания более сложных форм аутентификации и механизмов авторизации пользователя, в том числе через API или через социальные сети, мы можем использовать внешний пакет Jetstream
.