Авторизация в React-приложении с Firebase и Redux-Toolkit

  Рет қаралды 89,452

Михаил Непомнящий

Михаил Непомнящий

Күн бұрын

Пікірлер: 219
@TheS68123
@TheS68123 10 ай бұрын
Была бы номинация для лучшего русскоязычного блогера. Я бы точно голосовал за Михаила Непомнящего. То что вы делаете, это бесценная информация!
@Гилфойл-т4я
@Гилфойл-т4я 2 жыл бұрын
Спасибо что дал общее понимание как работает цепочка firebase - redux - react :) Развиваемся! 👍🏻💪🏼🎉
@mishanep
@mishanep 3 жыл бұрын
С момента записи видео успел обновиться react-router-dom. Поэтому дабы повторение кода по видео работало, надо установить пятую версию данной библиотеки. Для шестой версии роутинга решил записать отдельный цикл видео, первое из цикла kzbin.info/www/bejne/ZpLYhGx6g7mgsKc
@shoxerpetrosyan8678
@shoxerpetrosyan8678 2 жыл бұрын
Спасибо за видео,очень все подробно.....подскажите пожалуйста, какое видео по редакс посмотреть.
@mishanep
@mishanep 2 жыл бұрын
@@shoxerpetrosyan8678 kzbin.info/www/bejne/eWHJc6GfocR8o5Y вот это =)
@shoxerpetrosyan8678
@shoxerpetrosyan8678 2 жыл бұрын
@@mishanep Спасибо за обратную связь
@melsvagharshyan
@melsvagharshyan 2 жыл бұрын
@@shoxerpetrosyan8678 Barev Dzez, im mot chi asxhatum, grum a invalid API key, inchich klini?
@FilmsMediaTV
@FilmsMediaTV 2 жыл бұрын
А как сейчас используется Redirect ?
@idpliev
@idpliev 6 ай бұрын
Суперприятно слушать, отличная подача, манера, затягивает невероятно, спасибо!
@xdayx53
@xdayx53 10 ай бұрын
Пушка, Михаил, просто пушка. Вы мне этот react, redux тупо вдолбили, спасибо)
@ГригорийДруженьков
@ГригорийДруженьков 2 жыл бұрын
Долго искал подходящий вариант регистрации, наконец-то нашел! Спасибо большое за видео)
@powersx1322
@powersx1322 Жыл бұрын
4:05 на 2023 год код должен выглядеть так 5:12 код должен выглядеть так const HomePage = () => { return ( HomePage ); };
@Sylar7773
@Sylar7773 2 жыл бұрын
Смотрю Ваш контент и поражаюсь как круто Вы учите. Огромное спасибо
@mikhailrypta4779
@mikhailrypta4779 3 жыл бұрын
Спасибо за столь полезные видосы по Реакту :)
@SergeyPerestoronin
@SergeyPerestoronin 3 жыл бұрын
Пара ложек дёгтя к ролику. Если где я ошибся - пожалуйста прокомментируйте. 1) Сама идея определять залогинен ли пользователь чисто по данным из store ошибочна. Данные в store не могут в текущем виде являться этому подтверждением. Актуальность этих данных необходимо контролировать. Для этого можно использовать хук onAuthStateChanged из библиотеки firebase/auth. 2) Так же удаление данных о пользователе из store не является фактом того, что сессия авторизации закрыта в том числе и на сервере базы данных. Логаут на сервере можно выполнять с помощью метода signOut из библиотеки firebase/auth. Пожелание. Есть специализированная библиотека react-redux-firebase. Было бы здорово, если бы в теме про react и firebase рассказали стоит ли её использовать в сравнении с официальным SDK firebase. Вместе с тем хочу отметить, что ваши ролики о redux-toolkit - это лучшее, что мне удалось найти на русском языке. Поэтому буду благодарен, если в своих роликах, где используется redux-toolkit, также будете использовать библиотеку redux-persist или её специализированный форк reduxjs-toolkit-persist, или другой способ кеширования. А то уж слишком часто приходится бороться с ошибками из-за redux-persist.
@zipri9576
@zipri9576 2 жыл бұрын
то есть при создании auth в приложении не обязательно создавать для этого редьюсер - можно обойтись чисто функциями firebase?
@crn05
@crn05 Жыл бұрын
@@zipri9576 по идее состояние "залогиненности" должно где-то сохраняться, вместо того, чтобы при каждом роуте дергать firebase. Как вариант можно использовать context, вместо редакса.
@alext5030
@alext5030 Жыл бұрын
"onAuthStateChanged". Это, конечно, круто, но в большинстве случаев имеешь дело с самопальным бекендом, у которого ничего такого нет в принципе. А от идей типа "в любой непонятной ситуации отправляй запрос на бекенд" нужно жестко отучать. У JWT токенов есть exp date. Вот её и нужно проверять, а если протух - удалять из стора и local storage. Для роутинга этого достаточно. Дальше - по обстановке, в зависимости от того, применяется ли refresh token, например. Базовый вариант (без refresh token) - редирект на страницу логина. Но дергать бекенд при каждом переходе по роуту - это дичь.
@СергейК-б6н
@СергейК-б6н 12 күн бұрын
@@alext5030 Я ваще впервые с этим всем столкнулся тож сижу думаю как быть :D
@СергейК-б6н
@СергейК-б6н 12 күн бұрын
@@alext5030 Я ваще впервые с этим всем столкнулся тож сижу думаю как быть :D
@викторпотапов-ы6д
@викторпотапов-ы6д 2 жыл бұрын
Огромное спасибо благодаря вашим роликам можно узнать очень много полезного )
@ВладимирГугин-ш7щ
@ВладимирГугин-ш7щ 2 жыл бұрын
Михаил спасибо. Многому научился благодаря твоим видосам
@konglomora3230
@konglomora3230 3 жыл бұрын
Прям то что мне сейчас нужно, спасибо!!!
@denissavast
@denissavast 2 жыл бұрын
Благодарю за отличнейшую работу и подачу материала!
@АнатолийГорбов-о1ь
@АнатолийГорбов-о1ь Жыл бұрын
Очень крутой канал! весь контент на высоте! Спасибо Михаил, продолжайте в том же духе))
@АннаЕгорова-н4м
@АннаЕгорова-н4м 2 жыл бұрын
Спасибо за ваш труд, очень интересно, пробую повторить :)
@andteslenko
@andteslenko 2 жыл бұрын
Спасибо большое. с удовольствием смотрю твои видео, все просто и понятно)
@edgeofeternity85
@edgeofeternity85 Жыл бұрын
FirebaseError: Firebase: Error (auth/network-request-failed). VPN не помогает, все равно ошибка остается, все проверил, никак не исправлется(
@evgeniybelkovskiy4896
@evgeniybelkovskiy4896 2 жыл бұрын
Благо дарим, Михаил!!! Удачи Вам!
@eg128
@eg128 2 жыл бұрын
Спасибо большое за видео. Очень полезно и подробно. А будет видео, где можно получать данные получать данные,которые пользователь добавил в бд(к примеру у каждого пользователя возможность на сайте добавить закладки, они хранятся в firebase и при авторизации, каждый пользователь будет получать свои закладки)
@dimalukashenko4865
@dimalukashenko4865 3 жыл бұрын
Спасибо, очень интересно и доступно.
@matveyd7272
@matveyd7272 Жыл бұрын
В 6 версии react-router-dom хук useHistory не доступен. Вместо import { useHistory } from 'react-router-dom' Сделайте import { useNavigate } from 'react-router-dom'; В компоненте: const navigate = useNavigate(); И в функции: navigate('/')
@pelemehka99mvp61
@pelemehka99mvp61 11 ай бұрын
с этими вправками тоже не работает(
@1Chitus
@1Chitus Жыл бұрын
Очень крутой канал!
@СергейПетров-б4щ4ч
@СергейПетров-б4щ4ч 2 жыл бұрын
Круто! Спасибо за урок!
@from_brest2631
@from_brest2631 3 жыл бұрын
Лайк и смотрим
@MrMomomoy
@MrMomomoy 2 жыл бұрын
Михаил, спасибо за видео. Может снимете еще видео про авторизацию с помощью гугл аккаунта или соцсетей? думаю, многим такое будет интересно.
@exe611
@exe611 8 ай бұрын
У меня приложение просто превращается в белый экран, если в main.ts импортирую './firebase.ts'. С чем это связано? (на данный момент саму логику авторизации и регистрации, начиная с 20:46 как на видео, не делал, вдруг это влияет)
@never.m1nd
@never.m1nd 4 ай бұрын
Привет! А как сделать кастомные страницы подтверждения почты и сброса пароля? В шаблонах firebase есть возможность указать свою action URL для письма, но ссылка становится общей для всех действий, различия лишь в mode=... который идет в query параметрах. Просто страницы с формами то разные для различных действий, а ссылка одна.
@andreyf6728
@andreyf6728 2 жыл бұрын
const user = await signInWithEmailAndPassword(auth, email, password); const newUser = user as unknown as OAuthCredential; в newUser уже будет доступен accessToken
@nikitashevyakov3057
@nikitashevyakov3057 7 ай бұрын
Михаил, спасибо большое за время и труд! Мне кажется подход раскрыт не до конца. Есть минус вашего подхода, который не сразу понятен. Сам минус: Что будет если авторизованный юзер откроет ещё вкладку? Будет то, что стейт в редаксе пуст, нужно логиниться заново. Вопрос: Как измениться подход авторизации при множественном выборе вкладок в сравнении с данным проектом? Хранить ли информацию о юзере и токенах в редаксе или же использовать localStorage? Буду признателен за ответ. PS. Ролик сделан на высшем уровне
@nikitaermolenko7813
@nikitaermolenko7813 Жыл бұрын
Окей, а как работает то, чтобы например юзер регается - входит и у него своя личная инфа на сайте? Допустим, личный список задач, а у другого юзера другой - свой список задач уже, это автоматом определяется уже на firebase или ручками как-то?:)
@СергейСомов-м8ы
@СергейСомов-м8ы Жыл бұрын
Не знаете почему на этапе первого запуска(27:58) вот такая ошибка: FirebaseError: Firebase: Error (auth/user-not-found).?
@d4rax
@d4rax Жыл бұрын
проверь свою страницу регистрации, возможно ты используешь не тот хук от файрбэйса типо signIN... либо createUser...
@whicencer8819
@whicencer8819 2 жыл бұрын
Здравствуйте Михаил. Вопрос: куда можно вынести эти действия которые мы делаем в handler'e нажатия на кнопку? Чтобы не нагромаждать сильно код в компоненте. (я про саму логику авторизации. когда мы в функции обработчике вызываем все эти методы авторизации)
@mishanep
@mishanep 2 жыл бұрын
Я деталей из видео уже не помню, но когда мы говорим про реакт компоненты и вынос логики, то лучшее решение - кастомный хук. Он может, например, возвращать только хэндлер.
@black_light
@black_light 9 ай бұрын
Супер. Спустя два года код не изменился)
@Rivaric
@Rivaric Жыл бұрын
Спасибо за видео, а есть такая возможность, чтобы добавить какие-то параметры у пользователя, допустим: аватарку и описания профиля, как это сделать ?
@sovazavr4499
@sovazavr4499 Жыл бұрын
Кто нибудь сталкивался с ошибкой на 27:00 "reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers
@ГригорийДруженьков
@ГригорийДруженьков 2 жыл бұрын
Можно сделать видео по добавлению cookie на данную регистрацию/авторизацию?
@approximation9294
@approximation9294 3 жыл бұрын
Огромное спасибо! А планируется что-нибудь по SSR?
@mishanep
@mishanep 3 жыл бұрын
Со временем запишу. Видел на соседнем канале цикл по NextJS идёт, поэтому пока повторяться не хочется.
@FlashViolet
@FlashViolet 3 жыл бұрын
@@mishanep не подскажешь название соседа?)
@mishanep
@mishanep 3 жыл бұрын
Да, запросто kzbin.info/www/bejne/g2K8aH2jltifobc&ab_channel=webDev
@ФеликсДуйшебеков
@ФеликсДуйшебеков 2 жыл бұрын
При регистрации ошибка FirebaseError: Firebase: Need to provide options, when not being deployed to hosting via source. (app/no-options). Подскажите как исправить пожалуйста
@black_light
@black_light 9 ай бұрын
После деплоя на vercel консоль выдает ошибку firebaseerror: firebase: error (auth/invalid-api-key) Upd: надо было на vercel переменные апишки отдельно импортировать.
@danil_rotan
@danil_rotan 2 жыл бұрын
Добрый день, Михаил! Спасибо за урок! Подскажите пожалуйста, у меня перекидывает на страницу с "Welcome", только после второго входа. Первый вход записались данные в state, и только со второго он их читает и понимает, что у нас есть пользователь и условие в HomePage срабатывает. В чем может быть проблема?
@trendsgallery
@trendsgallery Жыл бұрын
А как правильно хранить авторизацию при перезагрузке, если localStorage и cookie - это небезопасно ?
@ЯрославИсаков-ч2л
@ЯрославИсаков-ч2л 2 жыл бұрын
Нужно ли делать запросы в бд фаирбейза в санках? или в самих компонентах это норм подход?
@0NameOfShadow0
@0NameOfShadow0 Жыл бұрын
Люди, кто знает как решить эту ошибку? export 'userReducer' (imported as 'userReducer') was not found in './slices/userSlice' (possible exports: default, removeUser, setUser)
@finnik5994
@finnik5994 Жыл бұрын
у тебя есть классный туториал по реакт роутингу, и оттуда ссылка на этот урок, когда ты делаешь авторизацию. Было бы здорово, если бы ты сделал новый урок, который бы расширил тот (с реакт роутингом), так как в этом используется синтаксис старого роутера.
@Aleksandr_Bolshakov
@Aleksandr_Bolshakov Жыл бұрын
Поддерживаю, вот именно сейчас настраиваю роутинг к авторизации, правда вместо redux использую mst
@VladManukian
@VladManukian Жыл бұрын
Ребята,я даю совет, который мне дали месяца два назад. Может вы не просили, но мне помог, авось вам тоже. Учитесь использовать новый синтаксис сами. Иначе вы будете выпадать постоянно на роботе, искать видосы по использованию нового синтаксиса- это куча времени, которое должно идти на совсем другого рода роботу. П.С. Читайте документацию, то очень много и подробно описано, по роутингу там буквально свитч изменился и exact кажется. Все остальное Вам пока не понадобиться. П.С.С. Я тоже так же искал, а потом прозрел, используя документацию, вы учитесь быстрее, нежели на ютуб видосах.
@vegan_blade
@vegan_blade Жыл бұрын
объясни пожалуйста в чем разница делать авторизацию твоим способом либо же через java spring. Пишу диплом и вот стоит выбор
@antonklochkov3416
@antonklochkov3416 2 жыл бұрын
Зашел в комментарии поискать информацию об интерцепторах токена, на функциях, но так и не нашел информации😢
@never.m1nd
@never.m1nd 6 ай бұрын
a jwt токен есть возможность использовать в firebase? с куки я так понял он не работает?
@ilyafrontend
@ilyafrontend 5 ай бұрын
работает
@kenn2ki
@kenn2ki Жыл бұрын
Михаил, будет ли обновленная авторизация на Route 6?
@t.r.e.p3841
@t.r.e.p3841 2 жыл бұрын
Помогите пожалуйста, только что делал приложение по примеру, во-первых немного обновился роутер дом(6 версия), поэтому на главной странице redirect пришлось изменить на useNavigate, но теперь когда я авторизовываюсь, открывается главная страница, но при её обновлении пользователь как бы "стирается"(не авторизован) и вместо редиректа на страницу логина отображается пустая страница, т.е при обновлении страницы данные которые берутся из хука useAuth обнуляются и страница не рендерится. В консоли пишет что я должен использовать navigate в useEffect. Подскажите как исправить это
@muradkhanibragimov1353
@muradkhanibragimov1353 2 жыл бұрын
Михаил, здравствуйте! Простите за небольшой оффтоп, очень интересно узнать название пака иконок, которую Вы используете в vscode, подскажите пожалуйста ?
@mishanep
@mishanep 2 жыл бұрын
Material icons
@Zreus-ry9el
@Zreus-ry9el Жыл бұрын
Классное видео. А есть гайд где объясняется как создать базу данных привязанную к конкретному пользователю в firebase?
@_SPIRICH_
@_SPIRICH_ 2 жыл бұрын
Спасибо большое!
@ВладимирКондратьев-ч9ц
@ВладимирКондратьев-ч9ц 3 жыл бұрын
Михаил добрый день)Скажите пожалуйста у меня немного не по теме и достаточно спецефический вопрос)Возможно ли стать React Native разработчиком, понимая неплохо реакт но не имея коммерческого опыта по реакту!?...
@mishanep
@mishanep 3 жыл бұрын
Здравствуйте. Не работал с React Native, поэтому не могу ответить.
@AisyluT
@AisyluT 2 жыл бұрын
16:43 про env
@pro.game.
@pro.game. 6 ай бұрын
Как называется расширение для снипитов React?
@СергейК-б6н
@СергейК-б6н 12 күн бұрын
react snipets
@rflwnq
@rflwnq Жыл бұрын
как сделать чтобы при обновлении страницы не приходилось заново логиниться? если localStorage, то где и что нужно сохранить в него?
@mishanep
@mishanep Жыл бұрын
Есть разные подходы к этому вопросу. В любом случае решение будет идти в связке с бэкендом. Есть варианты хранить сессию в куках, она автоматом будет уходить на сервер при каждом запросе. Есть вариант хранения токена в localStorage и отправка этого токена в запросах за конкретными ресурсами.
@insafsuz8864
@insafsuz8864 Жыл бұрын
Привет смог допилить этот не достаток? Если да то как?)
@ayaznamazov8328
@ayaznamazov8328 Жыл бұрын
нашел ответ? @@insafsuz8864
@mortydollar7592
@mortydollar7592 3 жыл бұрын
Attempted import error: 'Switch' is not exported from 'react-router-dom'. Это из-за того, что у меня 6-ая версия react-router-dom, а в видео используется 5-ая? Подскажите, как решить данную проблему?
@mishanep
@mishanep 3 жыл бұрын
А импорт компонента Switch в файле присутствует?
@mishanep
@mishanep 3 жыл бұрын
Зависимости установлены?
@mortydollar7592
@mortydollar7592 3 жыл бұрын
@@mishanep Да, но насколько я понял в 6-ой версии react-router-dom он не поддерживается.
@mortydollar7592
@mortydollar7592 3 жыл бұрын
@@mishanep Да, установлены, однако при их установке в консоли выдаёт много ошибок в которых даже 2 критических присутствуют.. npm audit fix не решает проблему
@mishanep
@mishanep 3 жыл бұрын
Я бы начал поиски отсюда reactrouter.com/docs/en/v6/upgrading/v5 Первое, что бросается в глаза, компонент Redirect больше нельзя использовать внутри Switch. Можно заменить редирект методом replace из хука useHistory.
@drbkso2
@drbkso2 Жыл бұрын
Добрый день! Скачал исходник, далее все настроил под себя, запустил проект, заполнил поле email и password нажимаю на кнопку register, после чего сайт тупо зависает не знаете в чем проблема?
@mishanep
@mishanep Жыл бұрын
Добрый день. Нет, не знаю. Надо смотреть консоль.
@bless_meparde4913
@bless_meparde4913 2 жыл бұрын
Может подскажете, почему компонент Form это div. Там 2 инпута и кнопка. И если заменить на div на form то авторизация перестает работать
@mishanep
@mishanep 2 жыл бұрын
Скорее всего у вас форма просто отправляется штатным образом, т.е. с перезагрузкой страницы. Если отменить это поведение, то должно вести себя также как div. Собственно, div использован для упрощения.
@awenn2015
@awenn2015 3 жыл бұрын
О, вовремя , щас глянемс
@fishko5346
@fishko5346 2 жыл бұрын
Подскажите пожалуйста, для чего нужен AppDispatch? что будет если использовать базовый useDispatch?
@mishanep
@mishanep 2 жыл бұрын
AppDispatch это типизированная версия хука. Можно не использовать. Но если typescript, то каждому хуку придётся тип указывать.
@fishko5346
@fishko5346 2 жыл бұрын
@@mishanep пытаюсь понять почему у нас нету проблем с использование базового dispatch:)
@mishanep
@mishanep 2 жыл бұрын
@@fishko5346 так это ж типизация, а не функционал. Автодополнение просто где-то не работает скорее всего))
@МадиярЮлдашев-п9д
@МадиярЮлдашев-п9д 2 жыл бұрын
Uncaught TypeError: Cannot destructure property 'email' of '(0 , react_redux__WEBPACK_IMPORTED_MODULE_0__.useSelector)(...)' as it is undefined.
@mishanep
@mishanep 2 жыл бұрын
Выглядит так будто не создан редакс стор.
@МадиярЮлдашев-п9д
@МадиярЮлдашев-п9д Жыл бұрын
@@mishanep спасибо большое , все исправил
@pseudonim510
@pseudonim510 Жыл бұрын
Если у кого на Vite ругается на api key, то нужно данные забивать в таком формате: VITE_apiKey = и т. д.
@velikorossnationalist4259
@velikorossnationalist4259 Жыл бұрын
А вместо process.env используете import.meta.env? Я вроде бы так сделал и VITE_...... указал, но ничего не поменялось((
@mashush9197
@mashush9197 Жыл бұрын
вот-вот, сам долго с этим возился - заменил все process.env на import.meta.env, а также в самом файле .env.local прописал все ключи через VITE_. Ужасно, потратил на это целый час
@gnmgnomski3579
@gnmgnomski3579 Жыл бұрын
тоже самое, но я вот думаю, а зачем собственно так делать, данные-то не секретные
@Nafumoto
@Nafumoto 3 ай бұрын
@@mashush9197 здравствуйте, есть ли возможность написать одну строку кода для примера как писать в env и firebase, благодарю вас
@mashush9197
@mashush9197 3 ай бұрын
@@Nafumoto 1. Внутри .env файла нужно написать переменную, которая будет начинаться с "VITE", например, VITE_BASE_URL=localhost:5173 2. В любом другом файле для использования переменной используешь import.meta.env.VITE_BASE_URL
@DirtyKalach
@DirtyKalach 2 жыл бұрын
Здравствуйте, спасибо большое, использовал ваше видео для реализации пет проекта. Всё предельно ясно, объясняете как бог ) один вопрос, у меня при вводе, пароль видимый, как это исправить?
@mishanep
@mishanep 2 жыл бұрын
Для инпута атрибут type должен равняться password
@San-sd3bz
@San-sd3bz Жыл бұрын
А что будет, если превысить лимиты бесплатные в firebase? Он перестанет запросы принимать?
@izzy7541
@izzy7541 3 жыл бұрын
Слышал много про замену небольшого бека для фронтенда с помощью firebase'a. Сильно ли он ограничен по функционалу если сравнивать с бэком для среднего по объему интернет-магазина? Хочу попробовать сделать проект для себя, а в бэке я дуб дубом
@mishanep
@mishanep 3 жыл бұрын
Там есть несколько вариантов работы с базой данных со своими API. Можно как раз сочетать с авторизацией. Но я глубоко с firebase не работал, у меня есть определенные вопросы к нему. В ютубе есть примеры проектов интернет-магазинов на firebase, так что, вероятно, мои вопросы решаемы - вопрос времени и тщательного изучения документации.
@zulaikamahamatalieva7956
@zulaikamahamatalieva7956 2 жыл бұрын
Здраствуйте Михаил, я полностью переписала ваш код, на экран ничего не выходит, просто белый экран. Мне кажется он не может читать: const app = initializeApp(firebaseConfig); из firebase.js. что делать в таком случае? очень надеюсь на обратную связь))
@JackShepards
@JackShepards 2 жыл бұрын
Нашли решение?
@drbkso2
@drbkso2 Жыл бұрын
@@JackShepards нашли решение? У меня апп is assigned but never used и зависате при нажатии на кнопку регистер
@JackShepards
@JackShepards Жыл бұрын
@@drbkso2 нет. видео старое. решение проекта тоже старое
@vadicus6534
@vadicus6534 2 жыл бұрын
Михаил, почему ты используешь формат файлов jsx, вместо js?
@mishanep
@mishanep 2 жыл бұрын
Потому что файлы содержат jsx разметку. И потому что такое расширение также даёт редактору знать, что сниппеты для разметки здесь тоже актуальны.
@vadicus6534
@vadicus6534 2 жыл бұрын
@@mishanep Спасибо!
@absurdist1330
@absurdist1330 2 жыл бұрын
Hello Sir, thank you for this tutorial. I am trying to implement writing an AsyncThunk middleware which works with all the methods that you have used - 'signInWithEmailAndPassword' for login for example. I noticed that you prefer to await the results and synchronously then dispatch your reducers. Do you have experience with doing the same but asynchronously with the async thunks? Thank you in advance!
@Meat-t7z
@Meat-t7z 2 жыл бұрын
Всем привет! можете кто нибудь сказать для чего нужен access token в firebase?
@alsunurlanova3451
@alsunurlanova3451 2 жыл бұрын
Было бы круто если бы вы сняли видео для обновленной версии react-router-dom
@mishanep
@mishanep 2 жыл бұрын
У меня есть отдельный плейлист с подробным разбором шестой версии react-router-dom.
@muhammadsalam-dev
@muhammadsalam-dev Жыл бұрын
Супер, саул
@ЛексКов-т9э
@ЛексКов-т9э 9 ай бұрын
Как сделать чтобы авторизация сохранялась после обновления страницы?
@mishanep
@mishanep 9 ай бұрын
Хранить сессию в localstorage или sessionstorage
@ЛексКов-т9э
@ЛексКов-т9э 9 ай бұрын
@@mishanep понятно, но тут же используется firebase, зачем LS?
@SeniorHuguenot
@SeniorHuguenot Жыл бұрын
Некоторые компоненты в библиотеках были изменены с загрузки данного видео (ОБРАЩАЙТЕ НА ЭТО ВНИМАНИЕ)
@DmitriyDev
@DmitriyDev 2 жыл бұрын
а эти данные о пользователях можно скачать?
@jyrozeppeli-q6f
@jyrozeppeli-q6f Жыл бұрын
почему у вас внукция handleClick была не написана но у вас все еще работает?
@mishanep
@mishanep Жыл бұрын
Не понимаю о чем вы. Код сниппет набросайте, о котором идет речь.
@murderousvortex
@murderousvortex 2 жыл бұрын
Кто-нибудь сталкивался с ошибкой : Firebase: Error (auth/network-request-failed)? Повторял всё по видео и показывает данную ошибку.Что делать?
@ruslanaliev2933
@ruslanaliev2933 2 жыл бұрын
Над этой ошибкой есть ещё строка с инфо об ошибке, что там?
@murderousvortex
@murderousvortex 2 жыл бұрын
@@ruslanaliev2933 только это на красном фоне показывает
@ruslanaliev2933
@ruslanaliev2933 2 жыл бұрын
@@murderousvortex при настройке SDK, web выбрал или для мобильных? Если включен vpn попробуй отключить. Попробуй перезапустить приложение
@murderousvortex
@murderousvortex 2 жыл бұрын
@@ruslanaliev2933 web Пробовал перезапускать
@ruslanaliev2933
@ruslanaliev2933 2 жыл бұрын
@@murderousvortex если есть репозиторий, скинь, посмотрю
@LuckyLucky-vq5lt
@LuckyLucky-vq5lt 2 жыл бұрын
Спасибо!!!
@mustafoyakubov1198
@mustafoyakubov1198 2 жыл бұрын
Привет Михаил, подскажите как это исправить? FirebaseError: Firebase: Error (auth/network-request-failed).
@mishanep
@mishanep 2 жыл бұрын
Как знать, возможно сам Firebase блокирует запросы из вашего региона. Сейчас всё может быть. Можно попробовать из-под VPN.
@mustafoyakubov1198
@mustafoyakubov1198 2 жыл бұрын
@@mishanep Я включил vpn и теперь я получаю эту ошибку: Firebase: Error (auth/admin-restricted-operation). Я искал в Интернете, но я не мог найти ответ. Вы знаете решение?
@mishanep
@mishanep 2 жыл бұрын
@@mustafoyakubov1198 не сталкивался, потому решения нет.
@edgeofeternity85
@edgeofeternity85 Жыл бұрын
Аналогичная проблема (
@awesomexe
@awesomexe Жыл бұрын
привет, включи анонимный вход в настройках консоли firebase
@jazgulshamuratova-gf8zh
@jazgulshamuratova-gf8zh 11 ай бұрын
Молодец
@ОлександрКовальчук-й9е
@ОлександрКовальчук-й9е Жыл бұрын
прив. спасибо за видос. все круто. а как сделать так, чтобы при релоад страницы не нужно было опять вводить емейл и пароль?
@frolovv3
@frolovv3 Жыл бұрын
привет. Сохраняй все в локал сторедж и когда страница будет релоудиться, то пушь данные с локал стораге в редакс. Можешь попробовать библиотеку react persist, которая сама сохраняет стор редакса в локал стораге
@ОлександрКовальчук-й9е
@ОлександрКовальчук-й9е Жыл бұрын
@@frolovv3 спасибо. Попробую, отпишусь
@gordarbinyan5478
@gordarbinyan5478 Жыл бұрын
У меня аналогичная проблема Firebase: Error (auth/invalid-api-key). FirebaseError: Firebase: Error (auth/invalid-api-key).
@ayaznamazov8328
@ayaznamazov8328 Жыл бұрын
как ее решить?
@ЛеонидЖартун
@ЛеонидЖартун 11 ай бұрын
@@ayaznamazov8328 Привет. Решил этот вопрос? Потому что мне не помог файл env.local, и все ключи с firebase пришлось хранить в открытом доступе, что не очень.
@robx_001
@robx_001 2 жыл бұрын
oчень крутое видео
@David-zh2kh
@David-zh2kh Жыл бұрын
ребят, если в тайпскрипт проект засунуть jsx, будет ли он работать?
@mishanep
@mishanep Жыл бұрын
Расширения файлов тогда должны быть .tsx
@pseudonim510
@pseudonim510 Жыл бұрын
У кого проблемы с accessToken создайте новый интерфейс и используйте его: export interface IUser extends User { accessToken: string; }
@mashush9197
@mashush9197 Жыл бұрын
незачем городить такую конструкцию - вот что на эту тему мне написал YouChat: "В Firebase Authentication в версии SDK 9.0.0 была внесена некоторая путаница в терминах и методиках получения Access Token. До этого пользовательский доступный токен (Access Token) можно было получить через свойство accessToken объекта User." А также дополнил: "Однако в версии SDK 9.0.0 свойство accessToken было заменено на метод getIdToken(), который возвращает Promise с идентификатором токена доступа (Access Token ID). Новый метод getIdToken() позволяет получить актуальный токен доступа для конкретного пользователя, который может использоваться для доступа к другим сервисам Firebase API, а также имеет большую гибкость в отношении управления жизненным циклом токена доступа."
@braivs
@braivs 2 жыл бұрын
Пожалуйста сними RTK Query + Firebase =)
@poghoskeshishyan649
@poghoskeshishyan649 2 жыл бұрын
здравствуйте, можете снимать видео о react crud и авторизация вместе ??? спасибо
@bless_meparde4913
@bless_meparde4913 2 жыл бұрын
Если кто-нибудь захочет использовать react-router-dom v. 6, то useHistioy замените на useNavigate "const navigate = useNavigate(); navigate("/");"
@alexfox_dev
@alexfox_dev 2 жыл бұрын
Не работает (
@МурадДжалалов-л6ц
@МурадДжалалов-л6ц 2 жыл бұрын
А как сбросить пароль, кто может подсказать?
@geniamasanin8322
@geniamasanin8322 3 жыл бұрын
А если будет рефреш страницы, юзер разлогинится?
@mishanep
@mishanep 3 жыл бұрын
В данном случае разлогиниться да. Как правило, то что мы храним в стейте, дополнительно кладётся в localStorage или sessionStorage. И оттуда initialState берётся, если там что-то есть. Соответственно при разлогинивании, сторедж вычищается.
@geniamasanin8322
@geniamasanin8322 3 жыл бұрын
@@mishanep Вроде у firebase есть функция чтобы проверить залогинен ли пользователь
@mishanep
@mishanep 3 жыл бұрын
Очень может быть, но не попадалась. Мне кажется здесь вопрос политики безопасности. В простейшем варианте кажется, что должно храниться в сторедже, чтобы не делать дополнительный запрос к серверу.
@nazario9537
@nazario9537 3 жыл бұрын
А как сделать так чтобы при рефреш страницы чтоб юзер не разлогинилс
@mishanep
@mishanep 3 жыл бұрын
@@nazario9537 нужно хранить состояние авторизации в localStorage и при инициализации js-приложения брать данные оттуда. Для redux здесь есть вариант автоматизации с библиотекой redux-persist. У меня есть соответствующий ролик про нее.
@danyildemyanyuk8182
@danyildemyanyuk8182 3 жыл бұрын
в чем может быть причина, что не могу залогиниться?
@mishanep
@mishanep 3 жыл бұрын
Можно залогинить ошибку и почитать её сообщение. Скорее всего пароль неверный. Либо firebase настроен некорректно.
@АнтонАрхангельский-н3е
@АнтонАрхангельский-н3е 2 жыл бұрын
Если есть ошибка с элементом Redirect на странице, то замените его на Navigate
@insafsuz8864
@insafsuz8864 Жыл бұрын
а что с useHistory?
@dielokua84
@dielokua84 9 ай бұрын
when you reload the page, you will be logged out of your account (this is a big minus
@mishanep
@mishanep 9 ай бұрын
It's just a simple question of storing a user session to localStorage. I assumed that devs, who would watch this, are already familiar with persistence in a browser
@samano4619
@samano4619 9 ай бұрын
найс
@razgildai8873
@razgildai8873 5 ай бұрын
Ты брат Яна Непомнящего
@АндрейПетров-р6о
@АндрейПетров-р6о 3 жыл бұрын
Разрешение видео очень плохое.. 360p всего
@____Olga__
@____Olga__ 3 жыл бұрын
у меня HD
@mishanep
@mishanep 3 жыл бұрын
Ютубчик сегодня шалит. Полдня видео обрабатывал. Сейчас должно быть в HD.
@АндрейПетров-р6о
@АндрейПетров-р6о 3 жыл бұрын
@@mishanep Все ок... и работа ваша отличная
@СергейВер-и9ю
@СергейВер-и9ю 3 жыл бұрын
Честно, мало понимаю логику автора: писать асинхронные функции в компоненте а потом их диспатчить? Смысл тогда асинхронной логики Redux? Поверхностно показали примерчики из документации двух библиотек по отдельности, а связать их нормально так и не смогли. Я имею ввиду, что должны быть отдельные асинхронные actions, которые все бы делали не внутри React компонентов, а внутри redux логики. А это что? Мухи с котлетами кушать. А в документации firebase до onAuthStateChanged, похоже, автор даже не дочитал. Подгорело у меня знатно, видя, что человек учит так связывать redux и firebase. Лучше бы уже показал react-firebase-hooks.
@mishanep
@mishanep 3 жыл бұрын
Redux не обязует нас использовать всю логику приложения через себя. В данном случае вполне имеет место быть предложенное решение. Потом это бегиннерс гайд и уверен, многие получили пользу от его просмотра. Разумеется, от базового примера можно расширяться по самым разным нюансам, добавляя дополнительную логику, в том числе и через дополнительные инструменты. Но мешать всё в кучу смысла не вижу. Честно, мало понимаю логику хейтить бесплатный контент.
@СергейВер-и9ю
@СергейВер-и9ю 3 жыл бұрын
@@mishanep хейта нету, я просто говорю что вижу. А вижу я, что связка redux-firebase работает, но все лежит в куче, а так никто не делает и такому учить не должен. Не зря же создали thunk, не зря же его требуют в объявлениях на работу, не зря же все пишут асинхронку в redux-thunk. Хотите может поспорить, что я не прав?
@mishanep
@mishanep 3 жыл бұрын
​@@СергейВер-и9ю нет конечно, спорить смысла не вижу. Я вообще против споров в сети, так как они редко бывают направлены на поиск истины. У redux-thunk полно альтернатив, включая встроенные в сам redux-toolkit. Но опять же, это не исключает точечного использования хэндлеров без привязки к редаксу. Возможно в Реакте у нас слишком много свободы в плане выбора того, что и как делать, но спорить какой из подходов единственно верный было бы глупо. Мне видится куда полезнее собрать свой пример и выложить его в комментариях, нежели убеждать автора отказаться от своей манеры подачи.
@СергейВер-и9ю
@СергейВер-и9ю 3 жыл бұрын
@@mishanep извините конечно, если вам показалось это грубо, но говорю, как вижу. Да, видос хороший, но только как отдельный поверхностный разбор Redux-toolkit и firebase-auth ПО ОТДЕЛЬНОСТИ. Но как вы их "связали", это глупо. Да, оно работает, но это неправильно по той простой причине, что вы засрали компоненту, которая не должна вообще видеть что-то из асинхронной логики. А представьте, если запрос в одном компоненте не один, а например 3. У большинства программистов просто кровь из глаз пойдёт от большого количества асинхронной логики в компанеете. Именно поэтому, так делать можно, но это плохо, очень плохо.
@FlashViolet
@FlashViolet 3 жыл бұрын
@@СергейВер-и9ю можно вас попросить дать пример кода с правильной связкой?
@Артем-т4с7б
@Артем-т4с7б 4 ай бұрын
видео безнадежно устарело, нет смысла смотреть
@ПавелКардаш-м2щ
@ПавелКардаш-м2щ 2 жыл бұрын
C токенами все же неясно, какой использовать в дальнейшем для работы с юзером. accessToken и refreshToken отличаются. Рефреш есть в типизации ответа, а вот accessToken приходится с тс брать через странную констуркцию const response: any = res.user.toJSON(), token: response.stsTokenManager.accessToken
@mishanep
@mishanep 2 жыл бұрын
Для работы нужен access token. Refresh используется для получения нового access токена, если прежний устарел.
Redux Toolkit для управления состоянием в React-приложении
1:00:09
Михаил Непомнящий
Рет қаралды 207 М.
Динамический запуск анимаций Framer Motion по viewport
19:57
Михаил Непомнящий
Рет қаралды 29 М.
IL'HAN - Qalqam | Official Music Video
03:17
Ilhan Ihsanov
Рет қаралды 700 М.
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
Une nouvelle voiture pour Noël 🥹
00:28
Nicocapone
Рет қаралды 9 МЛН
RTK Query или альтернативный Redux по работе с API
31:55
Михаил Непомнящий
Рет қаралды 103 М.
React стек 2022. TypeScript, Redux Toolkit, RTKQuery, Tailwind
1:17:59
Владилен Минин
Рет қаралды 152 М.
Аутентификация. Сессии и JWT
23:37
senior_zone
Рет қаралды 17 М.
Redux Toolkit. Лучший state manager 2022. Обзор. createSlice / createAsyncThunk
1:11:28
Давай Попробуем: JavaScript
Рет қаралды 45 М.
Валидация форм с react-hook-form в React-приложениях
16:50
Михаил Непомнящий
Рет қаралды 72 М.
Библиотека компонентов Material UI. Быстрый старт
48:59
Михаил Непомнящий
Рет қаралды 86 М.
IL'HAN - Qalqam | Official Music Video
03:17
Ilhan Ihsanov
Рет қаралды 700 М.