Простая авторизация на NODE JS. Роли пользователя. Express и MongoDB. JWT Access Token, bcrypt
ฝัง
- เผยแพร่เมื่อ 1 ต.ค. 2024
- В этом ролике мы реализуем регистрацию и авторизацию, аутентификацию c хешированием пароля bcrypt, научимся использовать JWT токен. Реализуем роли пользователя, разберемся с доступом для конкретной роли.
Мой курс "Продвинутый Frontend. В production на React" - ulbitv.ru/fron...
Исходный код - github.com/uti...
↓↓↓ПЛЭЙЛИСТЫ ↓↓↓
Собеседования -
• Собеседования
Paint online fullstack приложение canvas + websockets -
• Playlist
MobX & React -
• Mobx & React Полный ку...
Наглядная теория -
• Наглядная теория
Полный курс по Redux -
• Redux
React drag and drop -
• Drag and drop на REACT JS
React компоненты -
• ReactJS компоненты
React + Redux + Webpack
• React Redux Webpack - ...
Анимации в React -
• Анимации в React. Reac...
Разработка fullstack MERN web приложения
- Frontend - • Playlist
- Backend - • Playlist
- Fullstack - / playlistlist=pl6dxkon1...
Поддержать меня и мой канал вы можете по ссылкам ниже.
Qiwi кошелек - qiwi.com/n/BODYE821
Яндекс деньги - yoomoney.ru/to...
Этот коментарий создан в качестве уважения автору и для продвижения его канала.
Спасибо друг!)
Всем привет!
Если кто-то смотрит это видео в 2024, то на этапе создания пользователя, при выполнение POST запроса, у вас будет ошибка и пользователь не будет создаваться. Эту проблему решает пакет cors. Вам надо сделать npm i cors. Затем в основном файле достать его const cors = require('cors'). А после подключить app.use(cors()). После этого создание пользователя будет проходить без проблем.
В топ, чтобы люди увидели.
Лучший
@@GARLEENBEATS знаю:D
Кстати, не столкнулся с такой проблемой ... в 2024.
это же очевидно, достаточно в консоль глянуть, пернул в лужу ты
достаточно в консоль глянуть...
Как передать в header Authorization не в Postman Ctrl C/ Ctrl V , а динамично пусть сетаєт?
Этот коментарий создан в качестве уважения автору и для продвижения его канала.
Вижу видео от Ulbi - ставлю лайк!
Всегда годный контент!!!
Вижу комент от тески, сразу отвечаю!)) спасибо бро
Я походу чего то не понимаю. Если юзер первый раз логинится, у него еще нет токена, который в методе логина создается, а мидлвейр чекает токен(которого еще нет) в заголовке и не дает пройти дальше к методу авторизации где токен только должен создаться
Доброго времени суток, не совсем понятно откуда взялся такой путь на 8:05. Не могу получить файл
why you use two same validations on user name, if you have in model schema field unique = true, you don't need to use find(username) and return error
А зачем в middleware проверяется req.method === "OPTIONS"?
Не понимаю иногда восторженных отзывов пользователей, все пишут ура, в голове все по полочкам, ты лучший, эмм тут галопам по европам... вы хоть задумывались над тем, что тут ничего не объяснено? тут показан процесс интеграции, сама концепция - дело интересное, как и процесс ее реализации, но слишком поверхностно. если после этого видео у вас все в голове разложилось по полочкам, то скорее всего, вы все уже и так знали или же это сила воображения
Зависть плохое чувство
Так а что насчет протухших JWT Acess Token-ов?
bsryptjs уже 4 года не обновляется. Почему его выбрали?
С функцией своей справляется и по сей день))
Пытался сделать все по видео, но вместо mongo подключить postgres. Создал юзера и роль, но когда пытаюсь ввести константы User и Role в authController приложение крашится с ошибкой ConnectionError [SequelizeConnectionError]: Connection terminated unexpectedly
. Может кто знает, как решить проблему
Тимур, ты и на работе всё делаешь с помощью try/catch?
добрый день. напишите пожалуйста код для личного кабинета после регистрации пользователя
Ты красавчик, объясняешь как для детей) (очень хорошо), значит сам идеально разбираешься в теме.Так держать!
Этот коментарий создан в качестве уважения автору и для продвижения его канала.
Здравствуйте а как соединить созданный проект с front частью например React
узнали?
@@postyron1um Нет.Решил переделать проект с нуля по другому уроку по моему называлась “продвинутая авторизация на nodejs”
Зравствуйте, как лучше создать роль в бд? енд пойнт сделать?
Вторым параметром в mongoose.connect нужно передать: {useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true }, иначе ошибка.
У меня еще не добавлялись роли, пока я не сменила слово value на Rolename
Поразительно, один человек из всего коммент треда сказал о какой-то ошибке. Остальные видимо просто как фильм смотрят. Спасибо вам большое, роли не добавлялись тоже)
Если бы не ваш коммент, я бы наверное ни за что не понял как исправить ошибку
спасибо!
Супер, спасибо, все отлично обьяснил - пойду имплементировать)) А хранить мы токен jwt в куках будем, между запросами? Например юзер залогинился и пошел пить кофе на целый день..
🔥 Как по мне это максимально-оптимальная длина ролика, сразу лайк авансом.
Спасибо друг!)
Важна не длина, а содержание :)
А тут оно максимально полезное
@@dmitryts9093 Да. Сейчас просмотрел полностью, а завра, чувствую, буду сидеть пол дня, чтобы это все осмысленно повторить =) Не смотря на то что кажется понятным почти все
Самое годное видео про авторизацию, которое я только смог найти. Сейчас на канале 2к подписчиков, желаю тебе, чтобы это число росло в геометрической прогрессии, думаю так и будет. Абсолютно заслуженно.
Когда то искал подобное видео на русском, и не нашел, решил сделать сам!) Спасибо!
Уже 68))
@@Aidar_123 81
97,7
120 +
Этот коментарий создан в качестве уважения автору и для продвижения его канала.
Это все чудесно, но где ui -_-
жЭесть - в 30 мин больше полезного контента чем в платных курсах на ЮДЕМИ - p.s забыл добавить logOut
Ищем роль с value USER, создаём юзера и присваиваем значения поля value найденной роли
...
Хмммм
Спасибо. Смотрю с интересом.
В монгусе же есть валидация, зачем { check } from 'express-validator' ?
Да, контент топ! Получасовой ролик разбирал 4 часа )) с просмотром библиотек, пакетов, кодингом и т п) Спасибо!
Круто же) Надеюсь все получилось! Спасибо!
4 час это немного)
я целый день разбираю) впервые пробую эти технологии
@@stormd2902 я уже дня дня 4 сижу !!!
Я уже 4 года сижу
@@ОлегТиньков-б8с😂 прога это как зона, сидишь на зоне, а потом будешь работать, как выйдешь на свободу
А как сделать так, чтоб токен отправлялся вместе с запросом, а не в ручную с помощью Postman?
Лайк браттт тебе спасибо за видео!!!!!!!
Бро а как вместо МОНГО добавить MYSQL?? ))
обожаю ваши уроки! четко, понятно, качественно! спасибо большое)
8:16 модели
12:33 регистрация
13:32 bcryptjs
16:52 валидация
19:18 авторизация
20:37 jwt
24:31 метод авторизации
28:11 разделение прав доступа по ролям
@@liknox538 не, я скопировал, для себя чтобы не искать :)
Сейчас работаю с MobX. Очень востребованный сейчас. Было бы интересно посмотреть.
На канале есть про мобХ) небольшое видео, но как введение в технологию вполне сойдет
Здравствуйте, спасибо за видеоурок. У меня появилась проблема с MongoDB. При создании второго юзера, оно выдаёт ошибку ссылаясь на то что id у предыдущего созданного юзера такое же как и у второго. Мне теперь необходимо через Sequence переписать чтобы такого не было либо есть какие-то ещё решения полегче?
Это невероятно спасибо огромное
Как же хорошо простроена линия урока, большинство других блогеров сидят на ходу, охают ахают 2 часа. Здесь же четко, ясно. Ты очень помогаешь в учебе!!
"охают ахают" - смакуют 🙂
В пост запросе headers не забудьте поставить
Очень здорово!
Может кто подскажет. У меня почему то роли сами пропали из ДБ. Почему такое может случиться?
а как это добавить до сайта?
Спасибо за отличный обучающий ролик. Замечу, что функция bcrypt.hashSync(password, 7) вызвана неверно, вторым аргументом надо передать предварительно сгенерированную соль, а не просто цифру 7.
Соль генерится так например:
const salt = bcrypt.genSaltSync(7);
Воо, ништяк! На воскресной вечерок 30 минутный видосик!)
хееех)) Спасибо!
@@UlbiTV скажи пожалуйста, а у тебя нет видео о том как хранить ключи от базы данных, различные ключи от апи? Не могу найти нормальную информацию нигде(
Всегда было интересно с ролями поиграться, спасибо за видео, посмотрел в ускорении, обязательно потом пересмотрю более подробно, лайк
Спасибо, приятного просмотра)
ну и игры у вас ))
@@apayrus суровые, согласен
Столкнулся с такой проблемой, к сожалению.(
TypeError: Cannot read properties of undefined (reading 'forEach')
Если есть у кого мысли почему так - дайте знать здесь.
Решил свою проблему, она была связана с тем, что у меня была допущена ошибка в слове.
Я декодировал свой токен через веб сервис, и увидел, что в payload е я ожидал roles, а по факту там было role без буквы s, поэтому мне и приходил undefined.
Я заметил такую штуку, каналы авторов которые показывают себя собирают больше подписчиков. Такой шикарный контент, но подписчиков оооочень мало...
Крутейшее !!! NODE JS,Роли пользователя,Express,MongoDB,JWT Access Token, bcrypt
Капец чувак, я теперь даже не знаю, кто лучше, ты или Минин))))
ахахах) ни с кем не соревнуюсь, лишь бы контент нравился)
Годная вещь! Молодец!!! Жирнющий ЛАЙК!
Не реальный контент!! Бра-ВО!
Спасибо дружище)
Приветствую, спасибо большое за видео. Подскажи в двух словах на сколько сложно это дело задеплоить и подружить с spa на vue? Хочу сделать там авторизацию
Простая авторизация на NODE JS. Роли пользователя. Express и Firabas. JWT Access Token, bcrypt
Как на счёт refresh токена? Ни в одном видео на ютубе не встречал чтобы затрагивали
Возможно запишу в дальнейшем видео с рефреш токеном
Даешь джаваскрипт в русские глубинки! Перешел сюда из продвинутой авторизации
Спасибо за уроки без воды. Смотря твои уроки собираю весь пазл у себя в голове. Однозначно лайк и подписка!
Спасибо!) На канале много интересного, рекомендую!)
Как включить подсказку ожидаемых параметров в функциях в vscode?
пользуюсь вебштормом
Подумал, что видео простое и за пару часиков разберусь... ))))))))))))) потратил пять часов и два дня. Надеюсь, что я не бесконечно тупой, старался вдумчиво разбирать. Спасибо за крутой урок! А с тайпскриптом подобное есть?
Часто задаюсь вопросом, кто самый пиздатый js программист в ютюбе
Больше не задаюсь
А зачем секретный ключ в генерации токена? Если информация в токене может быть раскодирована на сайте jwt.io и без ключа???
Для верификации
Приятно слушать курс, последовательно изложено! Если авторизация на React и Firabase - Realtime Database. Проверка существует: такой пользователь в базе данных есть или нет. Где такой урок можно посмотреть
Круто ставлю лайк!
Будет ли продолжение теперь на фронтеде? Как скрывать показывать по определенным правам доступа?:)
Спасибо!) Возможно сниму продолжение!)
@@UlbiTV пожалуйста сними продолжение, очень интересно :)
@@UlbiTV +++
Ждем продолжения!
Контент чем то напомнил Brad Traversy
Крутой канал)
От души. Я с продвинутой авторизацией. Пытался сам реализовать, но получилось по другому, где всё связанно, а это не то, что мне нужно
только я не совсем поняла - зачем вешать это разрешение на запрос (на кнопочку), если суть в том, что я обычным пользователям эту кнопочку просто напросто НЕ ПОКАЖУ
ну то есть, зачем мне навешивать "разрешение" на кнопочку, если этой кнопочки у обычных пользователей даже не будет
и она будет отображаться (и рендериться) только в том случае если твой аккаунт - админский
Подписка + лайк, помог сделать курсовую) продолжу смотреть.
Спасибо
Вау, да ты ювелир. Очень клевые ролики
Стараюсь для вас, спасибо дружише)
Этот коментарий создан в качестве уважения автору и для продвижения его канала. Спасибо!
Привет!
Смотрю твои видео и дух захватывает!
Спасибо!
jwt авторизация на node js express mongoDB
Теперь осталось понять как это к инпутам прикрутить :D
Этот коментарий создан в качестве уважения автору и для продвижения его канала.
блин, ну а в куки устанавливать токен не надо? или пользователей тоже просить копировать токен при каждом запросе?
у него на канале есть ролик продвинутой авторизацией 6 месяцев назад вышел. Т.е. актуальный. Там он всё это делает)
24:20 TypeError: Cannot read properties of null (reading 'value')
Почему-то не создается пользователь когда меняю на value: "ADMIN"
нашел решение проблемы?
@@kinder5104 у меня просто не создаётся, пните, как решите @drgswg
Спасибо большое бро! Продолжай в том же духе самый лучшый канал рунета.
Шикарно, спасибо.! ком. для продвижения, добиваем до 1к
Спасибо бро) Чуть чуть осталось!
Лично я всю валидацию выношу в модели, а то валидация выходит размазанной по нескольким файлам.. У монгуса с этим всё ок, и документация имеется) Лайкос!)
Да, валидацию вполне можно выносить в модели, но бывают кейсы, когда это вредит)
уроки топ!
может ендпоинт бд тоже в конфиг надо было вынести?
Комментарий для продвижения лучшего контента!
👍
Спасибо тебе за ролик, смог реализовать такую же систему. Только вот вместо MongoDB использовал MySQL.
ОФигенно!
Не очень просто в понимании, если честно, думаю с опытом станет понятнее, но в целом понятно, спасибо
Спасибо за ролик!
Лайк авансом )
Очень интересное и полезное видео. Первый раз наткнулся на ваш канал. спасибо!
я не могу вывести функцию callback
спасибо
Правильней, наверное, было бы реализовать добавление токена в заголовок через node.js. А еще ты позабыл добавить условие в случае просрочки токена. Но я новичок, мог что-то упустить))
Спасибо, очень помог. Можно видио, как использовать jwt на frontend, где хранить на frontende лучше в cookies или localstorage
Спасибо, запишу себе идею, может выпущу видео!)
@@UlbiTV Допили вторую часть с рефреш токеном и работой с токенами со стороны фронта и это будет уже полный набор
Так я так наверное и смогу слезть с иглы Фронтенда )
Этому господину уготовлено место в раю без очереди.
Сэр, вы лучший!
Годный контент. Странно, что так мало подписчиков... Лайк, подписка, продолжай в том же духе
Оставляю комментарий для продвижения канала, это все, что я могу сделать для автора, в благодарность за его труд и помощь мне лично. С уважением
Полезная инфа, особенно для джуна
Сколько лет у тебя опыта в js ?
На днях будет ролик, я там расскажу (заманиваю так)!)))
Уже много дней прошло)
Самому очень интересно
@@ВячеславАрхипов-я1в дааа видео уже готово было, но потом я пересмотрел и решил его удалить 😅
@@UlbiTV так сколько у тебя опыта)
С удовольствием покодил вслед за автором... Зашло. Спасибо за контент)
Где ты был два года назад? Супер подача материала! Очень многие вещи буду теперь у себя в коде менять. Спасибо!
roleMiddleware(['ADMIN']) а почему или зачем именно массив ролей?
Почему нельзя вместо массива одну стрингу просто передавать и всё на этом?
ролей может быть несколько, например SUPERREADER, MANAGER, USER
@@UlbiTV вы имеете ввиду у одного и того же пользователя?
Ping
@@СвириденкоВолодимир-х1с да, один пользователь может обладать несколькими ролями во многих системах
А ссылку на код ты прячешь от завистников или чтоб люди ручками набирали? а то я нашел у тебя его.
Обычно оставляю ссылку, но тут возможно упустил! спасиб
Хороший материал для изучения JS на беке