Тёмный

JWT Аутентификация и Авторизация | Symfony PHP 

Александр Яковлев - PHP
Подписаться 2 тыс.
Просмотров 9 тыс.
50% 1

В данном уроке рассмотрен механизм аутентификации и авторизации с помощью JSON Web Tokens (JWT) токена на примере фреймворка Symfony 6
Telegram: t.me/alejandro...
Уроки, менторство - boosty.to/sash...

Опубликовано:

 

21 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 30   
@AlejandroYakovlev
@AlejandroYakovlev 9 месяцев назад
Уроки, менторство - boosty.to/sashokgorshok
@Vladimir-yh2dl
@Vladimir-yh2dl Год назад
пожалуй это видео сохраню, понятно и доступно объяснено, спасибо !👍
@stezhina
@stezhina 6 месяцев назад
Не понял как используются public and private ключи сгенерированные вначале видео при настройки бандла?
@NikolaiStiazhkin
@NikolaiStiazhkin 8 месяцев назад
Спасибо за лекцию. Мне одному кажется, что при обновлении access token надо обновлять и refresh_token?
@LeoMrakobes
@LeoMrakobes Год назад
Схоже на нових версіях бібліотек треба по іншому конфігурувати, після даунгдейду до версій як у Олександра все запрацювало, а на актуальних - нічого не працює, починаючи з пустих міграцій і навіть якщо їх закинути вручну - то тести все одно падають з помилками, каже що не бачить такої таблиці хоча вона є, при тому що інші тести відпрацьовують ``` bash-5.1$ php bin/phpunit PHPUnit 9.6.10 by Sebastian Bergmann and contributors. Testing ...[critical] Uncaught PHP Exception Doctrine\DBAL\Exception\TableNotFoundException: "An exception occurred while executing a query: SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "refresh_tokens" does not exist LINE 1: ...ername_2, t0.valid AS valid_3, t0.id AS id_4 FROM refresh_to... ^" at /var/www/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php line 71 E.. 6 / 6 (100%) Time: 00:14.388, Memory: 38.00 MB ``` схоже що спочатку потрібно мені розібратися із базою сімфоні
@jokeantishev9557
@jokeantishev9557 6 месяцев назад
У урока есть гитхаб?)
@fugitive9612
@fugitive9612 6 месяцев назад
под семерку прилично так устарело
@jokeantishev9557
@jokeantishev9557 6 месяцев назад
@@fugitive9612 а под 5 или 6?
@ВадимБурдуков-м2с
@ВадимБурдуков-м2с 11 месяцев назад
Большое спасибо за уроки! Единственное, что осталось неясно - почему нужно регистрировать контроллер для /users/me? По какой причине HealthCheck отрабатывал без дополнительной регистрации? UPD. И почему в консольной команде используется фабрика, а не команда, созданная на прошлом уроке?
@Александр-г9е6щ
@Александр-г9е6щ 2 года назад
Зачем в сущности User делать проверку пароля на null, и после этого все равно выполнять хеширование? Или это просто невнимательность?
@andreywatsup271
@andreywatsup271 2 года назад
Спасибо за уроки! src/Shared/Domain/Security/AuthUserInterface.php AuthUserInterface зависит от Symphony/Component/Security/Core/User/UserInterface. Получается, что доменный слой имеет какие-то внешние зависимости от фреймворка)
@AlejandroYakovlev
@AlejandroYakovlev 2 года назад
Да. С интерфейсами все сложно. Можно упороться и вынести функционал атворизации в отдельный модуль ради архитектурной концепции, написать свой провайдер и хэшер. И скрыть в итоге эту горечь. Но в данном случае это только добавит технической сложности и мы не сильно выиграем придеживаясь жестких ограничений. Да и видео получилось бы слишком раздутым и непонятным :) Мы попробуем причесать код в рамках урока, когда будем выносить функционал авторизации в отдельный микросервис. Но пока ... Как миниммум мы понизили связанность с фреймворком на уровне отдельного интерфейса. Было бы хуже дабавлять интерфейс фоеймворка прямо в Entity. Вообще с интерфейсами и структурами стоит соблюдать баланс, чтобы не певратилось в горе о ума :) Если мы отходим от постулатов и дейстительно выигрываем в плане эффективности и скорости разработки, при этом по возможности снизив связанность с фрейморком, скорее всего, это разумный путь :)
@andreywatsup271
@andreywatsup271 2 года назад
@@AlejandroYakovlev Спасибо за развернутый ответ. Ждем следующих видео)
@neveruma2236
@neveruma2236 Год назад
А если есть соседний контекст (говоря про DDD), в котором происходит работа, например с постами И нужно получить список постов, которые соответствуют авторизованному пользователю, то как передать информацию о авторизованном пользователе в этот соседний контекст?
@AlejandroYakovlev
@AlejandroYakovlev Год назад
Если обращение к контексту с постами идет из соседнего контекста, то следует передавать идентификатор пользователя через предохранительный уровень (Anticorruption Layer). Это может быть адаптер к модулю постов. И в адаптере метод getPostsByUser(userId).
@ivel17
@ivel17 2 года назад
Почему UserPasswordHasher не хранится в папке Service, в просто в папке Infrastructure?
@AlejandroYakovlev
@AlejandroYakovlev 2 года назад
Правильно будет хранить в Service
@RottenFoil
@RottenFoil 2 года назад
Вопрос: почему без юнит тестов? Не считаете необходимым в рамках курса или еще будут? Спасибо!
@AlejandroYakovlev
@AlejandroYakovlev 2 года назад
Верно, в рамках курса юнит тесты избыточны и могут отвлечь от самого главного. Функциональные же помогают доказать, что функционал является рабочим.
@solvex8304
@solvex8304 2 года назад
Как выясняется, тесты мало кто пишет из начинающих, поэтому просмотры к таким видео сильно падают.
@karfagen86
@karfagen86 Год назад
Спасибо за урок. Но. если честно, AuthUserInterface в домене наследоваться от симфони эт не верный подход. Как я понял мб эт для простоты конечно. Но вот setPassword с хешем, эт как-то перебор с нарушением ООП. В целом, хочется побольше твоих видео глянуть, т.к. годной инфы по ДДД мало. Да и не каждый пытается выстроить такую архитектуру. За это тоже отдельное спасибо!
@solvex8304
@solvex8304 2 года назад
src/Shared/Damain/ Может Domain?
@AlejandroYakovlev
@AlejandroYakovlev 2 года назад
Спасибо за наблюдательность. Поправлю.
@solvex8304
@solvex8304 2 года назад
@@AlejandroYakovlev Это тебе спасибо за уроки, только продолжай, не забивай на полпути!
@diatm1506
@diatm1506 2 года назад
В Symfony дела лучше обстоят для реализации OAuth2 чем в NestJs(
@karfagen86
@karfagen86 Год назад
Согласен
@eleimt
@eleimt 2 года назад
У кого-то при тестировании login тест 404 отдает?
@SbWereWolf
@SbWereWolf Год назад
у меня была 500 пока не выполнил команду make jwt (что бы шифрование начало работать), и надо не забыть сделать make db_migrate (что бы была БД со списком пользователей)
@Anastasia911
@Anastasia911 Год назад
А можно в следующий раз лицо не снимать?) Я отвлекаюсь
@AlejandroYakovlev
@AlejandroYakovlev Год назад
Поздравляю с 8 марта :)
Далее
«По каверочку» х МУЗЛОФТ❤️
00:21
CQRS (Query & Command Multiple Buses)  | Symfony PHP
19:52
Свой PHP фреймворк ... ЗАЧЕМ???
30:30