Продвинутый PHP: Основы Laravel - JWT-авторизация

Sdílet
Vložit
  • čas přidán 2. 05. 2023
  • В данном видео мы продолжим изучать основы Laravel:
    - Изучим, как можно использовать JWT через библиотеку JWT-auth
    - Научимся отправлять запросы с одного сервера на другой, используя Guzzle
    - Немного поговорим о пользе JWT

Komentáře • 32

  • @user-hc1qy8js2v
    @user-hc1qy8js2v Před rokem +13

    Лучший урок по JWT!

  • @user-un5ri4qk5j
    @user-un5ri4qk5j Před 10 měsíci +1

    Очень качественный ролик. Спасибо за труд!

  • @vitekvk
    @vitekvk Před rokem +2

    Спасибо, стало понятно что за заерь такой этот ваш JWT.

    • @danila.sokolov
      @danila.sokolov  Před rokem +1

      Надеюсь ещё и пользу какую-то принесёт это знание :)

  • @user-sx8zt8xq1r
    @user-sx8zt8xq1r Před 4 měsíci

    Вот класс! Самое лучшее объяснение! У меня вопрос, какой максимально простой подход выбрать для авторизации если весь фронт на вью?

  • @learnwithyan
    @learnwithyan Před 2 měsíci

    Круть!

  • @AliceLee123
    @AliceLee123 Před 9 měsíci

    Здравствуйте. У вас отличный урок, но вот впал в ступор при запросе. В ответе выводит такую ошибку "Method Illuminate\Auth\RequestGuard::attempt does not exist.
    " . Много ресурсов перебрал, но понять не могу с чем связано. Буду благодарен за ответ.
    p.s видимо ошибка в том, что я использую lumen, так как там не поддерживаются session, но в документации указано использовать этот метод 'attempt' . Стоит ли мне использовать что-то иное?

    • @danila.sokolov
      @danila.sokolov  Před 9 měsíci

      Ну, если рассматривать саму ошибку, то обращаться к методу attempt у RequestGuard 100% не имеет смысла - он там не объявлен.
      Возможно в той документации, о которой вы говорите, предлагается attempt вызывать у экземпляра другого класса? В целом, если в документации чётко прописано использование attempt, я бы просто запустил поиск по коду вашего проекта и посмотрел, у какого класса / классов объявлен данный метод. И от этого уже бы думал, в чём может быть ошибка.
      Скорее всего нужно просто у другого объекта вызывать данный метод.

    • @AliceLee123
      @AliceLee123 Před 9 měsíci

      @@danila.sokolov, Благодарю за ответ. На всякий случай, если будет у кого такая ошибка , напишу причину. Посмотрев на ошибку при обращении к методу Auth::attempt выводит requestGuard::attempt does not exist. Я перешёл в этот класс и посмотрел что выводит метод guard. У меня выводил api guard, хотя в файл bootstrap/app я добавил конфиг jwt. После чего я удалил этот конфиг и перешёл в папку vendor/laravel... и поменял в конфиге на драйвер jwt. Api guard не предполагает такой метод как attempt, вот и результат.

    • @danila.sokolov
      @danila.sokolov  Před 9 měsíci +1

      Вот, провели небольшое изучение ситуации и всё получилось. Увы, это типичная задача программиста и очень здорово, что у вас всё получается.

  • @zergzerg4844
    @zergzerg4844 Před 6 měsíci

    А как JWT -токен обновляется, что-то я не понял? Типа там автоматом при каждом запросе проверяется токен и если близко к затуханию система его обновляет?

    • @danila.sokolov
      @danila.sokolov  Před 6 měsíci

      Я уже отвечал на этот вопрос в комментариях к этому видео, но могу повторить, мне не сложно.
      Access token, используется при запросах к серверу. У него есть два свойства: он многоразовый и короткоживущий - время жизни определяет разработчик. Где-то 10 минут, а где-то и 2 дня. Время выбирается на основании того, как используется сервис.
      Второй, refresh token, используется для обновления пары access и refresh токенов. У него тоже есть два свойства, обратные первому токену: он одноразовый и долгоживущий. Совсем долгоживуший, например целый месяц.
      Использование refresh более безопасно - при его использовании, старый refresh токен сразу протухает - значит им никто другой не воспользуется (злоумышленнык, который увёл токен, н не использовал, или же пользователь, у кого увели - тогда он прелогинится и получит новый refresh, убив тот, который у злоумышленника. Но вариант с протуханием у злоумышленника уже зависит от реализации и такого может не быть).
      Надеюсь вам стало немного понятнее.

    • @zergzerg4844
      @zergzerg4844 Před 6 měsíci

      @@danila.sokolov Спасибо за ответ. Да я видел , что вы отвечали ранее, но мне из сообщения не понятно когда срабатывает метод обновления. Метод refresh постоянно проверят токен при каждом запроси и обновляет токены, если они близки к потуханию или же надо самому вызывать метод обновления?

    • @danila.sokolov
      @danila.sokolov  Před 6 měsíci

      Библиотека должна за вас всё решить в этой области. У токена же есть информация о его "сроке годности".

    • @danila.sokolov
      @danila.sokolov  Před 6 měsíci

      Но можно и вручную, вот выдержка из документации:
      $newToken = auth()->refresh();
      // Pass true as the first param to force the token to be blacklisted "forever".
      // The second parameter will reset the claims for the new token
      $newToken = auth()->refresh(true, true);
      Документация: jwt-auth.readthedocs.io/en/develop/auth-guard/

    • @zergzerg4844
      @zergzerg4844 Před 6 měsíci

      @@danila.sokolov Понял, спасибо большое за видео и ответ

  • @mclotos
    @mclotos Před 8 měsíci +1

    А зачем, если есть sanctum?

    • @danila.sokolov
      @danila.sokolov  Před 8 měsíci

      Можно и так, конечно. Но в плане лекций у меня был разбор именно JWT. Тем более, что у наших партнёров спрос на такой подход высок, поэтому и акцент именно на нём.

    • @mclotos
      @mclotos Před 8 měsíci

      @@danila.sokolov прикольно. просто я думал, что все и так умеют пользоваться JWT, ему же уже черт знает сколько лет. А учитывая, что он перестал обновляться пару лет назад, то на текущий момент его вполне можно признать мёртвым =)

    • @danila.sokolov
      @danila.sokolov  Před 8 měsíci

      Ну так это курс по PHP с нуля. Разумно предположить, что есть много людей, кто первый раз в жизни сел за веб-разработку и они вообще не представляют, что это за зверь такой.
      В основах PHP вообще был видео про Bearer-токены, которые просто в БД висят, чтобы в целом обучить токенной авторизации.
      Так что я не претендую я вселенские тайны или bleeding edge технологии в видео : )
      Но для начинающих должно быт полезно.

    • @danila.sokolov
      @danila.sokolov  Před 8 měsíci

      А насчёт "мёртвым", тут поспорю. Цель видео не столько про конкретный пакет поговорить (он скорее для удобства), сколько о том, чтобы рассказать про сам JWT, который явно не мёртв, т.к. это специфичный подход к авторизации, который сильно отличается от обычной Bearer-авторизации, т.к. снимает необходимость серверу стучаться в БД каждый раз для валидации прав доступа. А это довольно важный момент в работе множества высоконагруженных систем.

    • @mclotos
      @mclotos Před 8 měsíci

      @@danila.sokolov ,боюсь, что пока начинающие поймут всю мощь jwt, он уже окончательно уйдёт в историю =)
      Я просто сам программирую уже лет 20 и последние лет 5 иногда читаю бесплатные лекции по 1 семестру в разных колледжах по СНГ. И поэтому мне приходится следить за всеми последними трендами и отфильтровывать всё устаревшее. JWT пока держится =)

  • @Roltun
    @Roltun Před 9 měsíci

    Пока некогда смотреть

  • @Gnumasx
    @Gnumasx Před 4 měsíci +1

    И на каждый пук-среньк и хождение по любому роуту даже который не требует аутентификации, постоянно дергается база с селектом юзера. Кроме того tymon-jwt устарел и не обновлялся сто лет