This is hands-down the best comprehensive tutorial on JWT authentication I've ever come across on RU-vid. Thanks a lot for going out of your way to make it!
Так часто тебя смотрю, что непривычно было услышать на этом моменте 9:14 фразу "... чтобы отлавливать какие-то ошибки" вместо уже привычной фразы "... чтобы отлавливать потенциально возможные ошибки", как на 19:15 Кхм, как всегда лайк! 😊
Это просто прекрасный ролик. Именно благодаря тому, что он одним куском и со слайдами, я понял, как JWT работает. Я не понимал, что на /refresh запрос уходит без ведома пользователя. Спасибо. Надеюсь, комментарий достаточно длинный
Одни из лучших роликов на Ютубе по данной тематике. Канал с таким контентом полюбому перевалит за 100к, удачи автору, надеюсь не бросишь свое благое дело
Теперь когда нужно разобраться в чем то новом начинаю поиск с твоей странички на ютубе, пока что все видео что посмотрел - идеальные объяснения и покрытие темы, очень круто, продолжай!
Отличный ролик, очень интересно. Кладезь полезной информации для бэкендеров. Были некоторые моменты, о которых знал только в общих чертах. Спасибо большое! Круто👍🏻
молодчик... конечно досмотрел, потом пересмотрел и не один раз! Ты большой молодец Тимур! Реально поначалу твою подачу материала было тяжело воспринимать....но как говориться терпение и труд все перетрут! Всем привет кто здесь после Димыча ИТ камасутра
Для тех, кто столкнулся с проблемой при работе с nodemailer. После 30 мая 2022, закрыли доступ к настройке сторонних приложений. Чтобы решить эту проблему: 1) поставьте двух-этапную аутентификацию, если ее нет 2) вернитесь в настройки безопасности, под пунктом вход в аккаунт появится вкладка пароли приложений. Заходите, после выполнения всех махинаций, вам выдадут пароль для доступа к почте. Копируем, пихаем в проект вместо нашего обычного
Тимур, не слушай тех, кто ноет о том, что понять сложно. Кто действительно заинтересован, тот поймет. Например, я попытался все повторить еще в конце 2022, но не получилось отправить письмо на почту (поскольку там все стало мудреней). Только сейчас я нашел, как это сделать и сразу же повторил все видео до конца. И все получилось!
досмотрел ролик до конца. Бекенд скачал с гитхаба, фронтенд делал по ролику, Все получилось, сложности вызвала настройка гугл аккаунта. В ней было необходимо включить двухфакторку и сгенерировать специальный пароль для приложения. Теперь осталось осмыслить все, что было сделано в ролике. Спасибо за туториал
Очень высокое качество подачи контента. Не знаю, специально ты старался или уже "само" получается, но формат почти идеальный - функция/метод в высоту экрана, изложение материала, следующий скрин. Тимур, ты отличный преподаватель.
@@UlbiTV При регистрации пишет такую ошибку "Непредвиденная ошибка Token validation failed: refreshToken: Path `refreshToken` is required." " что не так
Раньше, когда был кипятильником, смотрел видосы Владлена Минина. Но когда дорос до чайника, пора бы знать как делается нормальная авторизация, спасибо ❤️ а то у меня акцесс токен генерировался, ставил на час, всё крашилось, выскакивала ошибка "нет авторизации" и приходилось убирать поле expiresin, чтобы эти ошибки меня не бесили
Если у кого возникнут проблемы с gmail: 1. Переходим в настройки и включаем там двухфакторную аутентификацию 2. После включения 2fa переходит в их настройки 3. Листаем в самый низ и находим там "App passwords" 4. Добавляем новое приложение, скажем ваше имя приложения и создаём ключ 5. Этот ключ вставляем в .env вместо ваше и всё будет работать ;)
после генерации ключа в какое поле в .env его записывать? После записи в поле пароля все равно ничего не работает, выдает ошибку Error: connect ECONNREFUSED ::1:587
прошелся по таймкодам - уже жирнейший лайк. практически всё щупал по отдельности, но хорошо структурированная инфа - всегда полезнее. предвкушаю вдумчивый просмотр :)
Это однозначно самый лучший контент по JavaScript, который я видел в интернете за год обучения. Автор умеет удивлять, умеет подбирать контент и никогда не даёт лишней информации и воды, за что огромный респект. Такой труд очень дорогого стоит. Если будет какой-то курс, то я точно буду первым в списке покупателей.
Сказать, что материал хороший это ни чего не сказать! Спасибо огромное за труд! Интересно увидеть: Функционал по сбору рейтингов ⭐⭐⭐ и лайков. Реализации массовой рассылки почты. Онлайн чат. Предварительная запись зарегистрированного пользователя онлайн с привязкой к goole документу где бы сохранялись заявки + смс оповещение о новой заявке на телефон. Конечно хорошо бы самостоятельно уметь реализовывать подобные функционалы... Мне 37 и у меня техническое образование и работа очень далека от программирования. Мое личное развитие происходит шаг за шагом только благодаря работе UIbi TV и аналогичным видео на просторах интернета.
Очень классный видеоролик, сделай видос про подключение оплаты к сайту, типо с нуля, как добавить возможность оплаты, таких роликов я не видел, а у тебя получается понятным языком объяснять непонятные вещи, короче, было бы классно, ну а так , как всегда лайк, продолжай в том же духе.
Для тех у кого возникнут проблемы с отправкой письма. Google изменил некоторые правила доступа для не безопасных приложений, теперь нужно: 1. Активировать в учетной записи двухэтапную аутентификацию, проверить почту и подтвердить. 2. Создать пароль приложения, все там же в настройках аккаунта, эта опция станет доступна после включения двухэтапной аутентификации, скопировать и вставить полученый пароль в файл .env в переменную SMTP_PASSWORD=ВАШ_ПАРОЛЬ. Автору огромное спасибо за контент.
у меня еще вот здесь не срабатывает const candidate = await UserModel.findOne({ email }); if (candidate) { throw ApiError.BadRequest( `Пользователь с почтовым адресом ${email} уже существует` ); } если почту, которая уже существует отправляю, виснет
Cпасибо большое за ролик. Как и просил, пишу о том, что досмотрел до конца. Контент очень хороший, мне как начинающему разработчику было очень полезно узнать новые концепты и технологии!
Хоть и год прошел с момента поста. Только на видео наткнулся. Интересный вопрос, тоже это заметил. Предполагаю, что с помощью контекста создается только один экземпляр класса, потомкам прокидываем сам класс и используем его методы. Если сразу в модуле со стором делать export default new Store(); или в файле через импорт класса создавать, то каждый раз при использовании метода будет создаваться экземпляр класса. Инфа не точная, лишь предположение.
Лучшее видео... Помню в свое время никак не мог понять как работают эти токены, обыскал весь ютуб и гугл) везде примитивные примеры были с одним токеном. Посмотрю повторно не помешает :) а тебе спасибо за труд
Да там нет ничего такого сложного на самом деле, но объяснения на всяких хабрах и правда такие себе, и конкретной и понятной реализации я в этих статьях не увидел
Тимур можешь объяснить, я никак понять не могу, как ты вот отсюда const userData = tokenService.validateRefreshToken(refreshToken); получаешь userData.id, там же string возвращается или null или jwt? как в твоем случае jwt.verify(token, process.env.JWT_REFRESH_SECRET); сравнение может вернуть из базы данные, что потом из того что вернулось забрать id?
Большое спасибо за труд. Конечно, за один присест такой объем осилить было немного сложно, но в этом и ценность, что вся информация собрана неким экстрактом в одном месте. Лучшая информация, лучшие ролики, без воды, отлично структурирована. Теперь у меня просто нет опции не выучить это. Спасибо!
Тимур, досмотрел до конца на х2, видео очень полезное, потом буду уже детально вникать, пересмотрю и попробую реализовать сам, очень хороший справочник получился
Единственное, что бы я поправил, я бы не отправлял обратно пару токенов в теле ответа. По идее это не безопасно. В теле оставить только токен доступа, а рефреш токен полетит на клиент в куках. Думаю так будет лучше. Поправь если я не прав.
Очень годный контент. Информация подается сжато, часто приходится останавливаться или возвращаться, и это гораздо круче, чем смотреть на x1.5 более водянистые ролики. Тимур, респект)
Идея для новых роликов: хочется посмотреть интеграцию с другим сервисом. То есть твой фронт, общается с твоим бекендом, а твой бекенд получает некие данные со стороннего сервера, на который авторизуемся по OAuth2.0, например фронт+бек получают данные с amocrm или любого другого ресурса на который авторизация по OAuth2.0
Спасибо огромное за труд! Такие видео - это как раз то, чего не хватает, когда ты знаешь теорию, можешь написать "hello world" по ней, но на больших проектах начинаешь пугаться и тупить. А после полноценного приложения от А до Я, паника уходит. Спасибо Вам большое!
Есть немало джуников, которые по сто раз прошли всю теорию, и им как раз нужны именно вот такие ролики, то есть практика и ещё раз практика. Спасибо за нужный контент, очень круто!!!! Делай побольше такого контента я обязательно буду тебя рекомендовать!!
@Ulbi TV, почему не хранишь оба токена как httpOnly? По сути зачем лишний раз дергать localstorage если на сервере всё равно каждый раз будет приходить токен в куках. Да и безопаснее это. На клиенте можно вообще не знать о токенах и всю часть сделать на сервере, связанную с jwt