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

Поделиться
HTML-код
  • Опубликовано: 4 ноя 2024

Комментарии • 30

  • @AlejandroYakovlev
    @AlejandroYakovlev  10 месяцев назад +1

    Уроки, менторство - boosty.to/sashokgorshok

  • @Vladimir-yh2dl
    @Vladimir-yh2dl Год назад

    пожалуй это видео сохраню, понятно и доступно объяснено, спасибо !👍

  • @andreywatsup271
    @andreywatsup271 2 года назад +2

    Спасибо за уроки!
    src/Shared/Domain/Security/AuthUserInterface.php AuthUserInterface зависит от Symphony/Component/Security/Core/User/UserInterface. Получается, что доменный слой имеет какие-то внешние зависимости от фреймворка)

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 года назад +4

      Да. С интерфейсами все сложно. Можно упороться и вынести функционал атворизации в отдельный модуль ради архитектурной концепции, написать свой провайдер и хэшер. И скрыть в итоге эту горечь. Но в данном случае это только добавит технической сложности и мы не сильно выиграем придеживаясь жестких ограничений.
      Да и видео получилось бы слишком раздутым и непонятным :)
      Мы попробуем причесать код в рамках урока, когда будем выносить функционал авторизации в отдельный микросервис.
      Но пока ...
      Как миниммум мы понизили связанность с фреймворком на уровне отдельного интерфейса. Было бы хуже дабавлять интерфейс фоеймворка прямо в Entity.
      Вообще с интерфейсами и структурами стоит соблюдать баланс, чтобы не певратилось в горе о ума :)
      Если мы отходим от постулатов и дейстительно выигрываем в плане эффективности и скорости разработки, при этом по возможности снизив связанность с фрейморком, скорее всего, это разумный путь :)

    • @andreywatsup271
      @andreywatsup271 2 года назад +1

      @@AlejandroYakovlev Спасибо за развернутый ответ. Ждем следующих видео)

  • @NikolaiStiazhkin
    @NikolaiStiazhkin 9 месяцев назад

    Спасибо за лекцию. Мне одному кажется, что при обновлении access token надо обновлять и refresh_token?

  • @ВадимБурдуков-м2с

    Большое спасибо за уроки!
    Единственное, что осталось неясно - почему нужно регистрировать контроллер для /users/me? По какой причине HealthCheck отрабатывал без дополнительной регистрации?
    UPD. И почему в консольной команде используется фабрика, а не команда, созданная на прошлом уроке?

  • @stezhina
    @stezhina 7 месяцев назад

    Не понял как используются public and private ключи сгенерированные вначале видео при настройки бандла?

  • @Александр-г9е6щ
    @Александр-г9е6щ 2 года назад +1

    Зачем в сущности User делать проверку пароля на null, и после этого все равно выполнять хеширование? Или это просто невнимательность?

  • @neveruma2236
    @neveruma2236 Год назад

    А если есть соседний контекст (говоря про DDD), в котором происходит работа, например с постами
    И нужно получить список постов, которые соответствуют авторизованному пользователю, то как передать информацию о авторизованном пользователе в этот соседний контекст?

    • @AlejandroYakovlev
      @AlejandroYakovlev  Год назад

      Если обращение к контексту с постами идет из соседнего контекста, то следует передавать идентификатор пользователя через предохранительный уровень (Anticorruption Layer). Это может быть адаптер к модулю постов. И в адаптере метод getPostsByUser(userId).

  • @jokeantishev9557
    @jokeantishev9557 7 месяцев назад +1

    У урока есть гитхаб?)

    • @fugitive9612
      @fugitive9612 7 месяцев назад

      под семерку прилично так устарело

    • @jokeantishev9557
      @jokeantishev9557 7 месяцев назад

      @@fugitive9612 а под 5 или 6?

  • @karfagen86
    @karfagen86 Год назад

    Спасибо за урок. Но. если честно, AuthUserInterface в домене наследоваться от симфони эт не верный подход. Как я понял мб эт для простоты конечно.
    Но вот setPassword с хешем, эт как-то перебор с нарушением ООП.
    В целом, хочется побольше твоих видео глянуть, т.к. годной инфы по ДДД мало. Да и не каждый пытается выстроить такую архитектуру. За это тоже отдельное спасибо!

  • @ivel17
    @ivel17 2 года назад

    Почему UserPasswordHasher не хранится в папке Service, в просто в папке Infrastructure?

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 года назад

      Правильно будет хранить в Service

  • @RottenFoil
    @RottenFoil 2 года назад

    Вопрос: почему без юнит тестов? Не считаете необходимым в рамках курса или еще будут? Спасибо!

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 года назад +2

      Верно, в рамках курса юнит тесты избыточны и могут отвлечь от самого главного. Функциональные же помогают доказать, что функционал является рабочим.

    • @solvex8304
      @solvex8304 2 года назад

      Как выясняется, тесты мало кто пишет из начинающих, поэтому просмотры к таким видео сильно падают.

  • @solvex8304
    @solvex8304 2 года назад

    src/Shared/Damain/ Может Domain?

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 года назад

      Спасибо за наблюдательность. Поправлю.

    • @solvex8304
      @solvex8304 2 года назад +1

      @@AlejandroYakovlev Это тебе спасибо за уроки, только продолжай, не забивай на полпути!

  • @eleimt
    @eleimt 2 года назад

    У кого-то при тестировании login тест 404 отдает?

    • @SbWereWolf
      @SbWereWolf Год назад

      у меня была 500 пока не выполнил команду make jwt (что бы шифрование начало работать), и надо не забыть сделать make db_migrate (что бы была БД со списком пользователей)

  • @diatm1506
    @diatm1506 2 года назад +1

    В Symfony дела лучше обстоят для реализации OAuth2 чем в NestJs(

  • @Anastasia911
    @Anastasia911 Год назад

    А можно в следующий раз лицо не снимать?) Я отвлекаюсь

  • @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
    ```
    схоже що спочатку потрібно мені розібратися із базою сімфоні