Создание API на Symfony 5: Refresh-токены, роли и тюнинг
ฝัง
- เผยแพร่เมื่อ 5 ต.ค. 2024
- В прошлом ролике мы сделали базовую регистрацию и аутентификацию, в этом нужно ее дотюнить: добавить refresh-токены, определиться с ролями и авторизировать пользователя сразу после регистрации.
symfony.com/do...
github.com/lex...
github.com/mar...
Github: github.com/ns3...
Yandex Zen: zen.yandex.ru/...
TH-cam: / @eazy-dev
Telegram: t.me/eazydev_y...
VK: eazydevru
Rutube: rutube.ru/chan...
Спасибо тебе за данный материал и всю проделанную работу, получилось очень информативно и полезно)
Очень жаль что так мало просмотров у такого крутого видео. Автору большое спасибо за работу.
Очень ценный материал!!! И обработка исключений и тесты, все что было необходимо!!! Благодарствую!!!
Теперь будем наблюдать резкое снижение количества говнокодеров в стране )))
Не будем))
Спасибо за видео весьма интересно и полезно, как всегда.
После просмотра появился вопрос. У нас появились два новых метода в API, но NelmioApiDocBundle не предоставляет нам документацию по ним. Как это исправить?
И ещё один момент, получается, тем методам, для которых мы указали ограниченный access_control, нужно дописать описание ошибок, при аутентификации/авторизации, в атрибуты (аннотации)?
5:04 - Refresh-токены
28:00 - роли
36:05 - тюнинг
С RefreshToken странная проблема... я поставил из коробки v1.1.1 на symfony 6.1 (php 8.1), и с этого момента при команде make:migration или doctrine:migration:diff - он желает стереть всю бд и добавляет одну таблицу refresh_tokens... Опытным путем выявил проблему - он видит только те Entity, которые непосредственно лежат в src\Entity. А если во вложенных папках - хана сущностям (к примеру, namespace App\Entity\Structure)...
Это печалит... Будем ждать следующих версий.
Получается: задача клиента, зарегаться/залогиниться и передавать в запросах заголовки Authorization и refresh_token, в случае если токен протух сервер так ответил, клиент делает запрос на api рефреша, получает по своему рефреш-токену новый токен и рефреш-токен, обновляет свои заголовки и повторяет последний неудачный запрос на котором сервер вернул ответ протухшего токена.
Для конечного пользователя этот механизм должен быть скрыт.
Не хватает запятых, не очень пониманию) клиент передает только authorization. Рефреш передается только в 1 сценарии. Не понимаю почему получение новой пары токенов по рефрешу должно быть скрыто от клиента)) это его прямая обязанность - получить токен для работы)) как он это сделает - логином по юзеру и паролю или по Рефреш токену совершенно не важно. Разные механики авторизации.
@@eazy-dev понял, был немного не прав! Благодарю!
Странно, пишет что refresh_jwt не должен быть в firewals.api - Unrecognized option "refresh_jwt" under "security.firewalls.api". Available options are
gesdinet_jwt_refresh_token:
token_parameter_name: refresh_token
если при рефреш 401 вылетает
Чем лучше использование HasLifecycleCallbacks для установки времени $createdAt, чем конструктора ? (RefreshToken entity)
Да по большому счету без разницы.