‌‌‎D
что за ошибка такая странная?
Попробуй передавать DOM элемент, а не JSX
Eugene
где нет рендера
например? и что нужно после экспайринга делать, отправлять запрос на получение нового токена? или если у меня уже есть refresh токен, то использовать его?
Maxim
Можно ли как то значение перенной передать в качестве имени тега в jsx ?
Китикет
в какую часть приложения?)
Перед основным запросом
Eugene
Перед основным запросом
ты имеешь в виду в index.js?
Китикет
ты имеешь в виду в index.js?
Ахаах, какой еще index.js
Eugene
Ахаах, какой еще index.js
ну я просто не понимаю, как это должно работать
Eugene
Ахаах, какой еще index.js
первый раз это делаю
Китикет
ну я просто не понимаю, как это должно работать
Ну вот огромный пример const base = axios.create({ baseURL: "https://my-api.com" }) const getToken = async () => { const current = ls.get("TOKEN") if (!isExpired(token)) return token const newToken = await refreshToken() return newToken } const request = async ({ url, method, data, headers }) => { const token = await getToken() return base({ url, method, data, headers: { ...headers, Authorization: `Bearer ${token}` } }) }
Китикет
С телефона писал, так что может чо не так быть)
Andrey
например? и что нужно после экспайринга делать, отправлять запрос на получение нового токена? или если у меня уже есть refresh токен, то использовать его?
токенами лучше на фронте не жонглировать, оставляя их в хттпОнли куках, проверяя при этом маршрут с текущим пользователем, к примеру, и по ответу рулить дальше (рефреш, редирект на логин) а в целом, это в слое с бизнес-логикой и стейтом приложения, можно стартовать хоть из входной точки приложения у нас это сделано так: на аксиосе воткнуты интерцепторы, которые ловят ошибки от бека если ошибка токена - пробуем рефрешнуть, и повторить обвалившийся запрос (для наблюдателя запрос получается бесшовным, т.е. как будто он и не падал с ошибкой) если не получилось рефрешнуть - диспатчим ивент, что мол все рип, логиниться надо в одной из моделей слушаем этот ивент, и по нему редиректим на логин
Anonymous
Всем привет. Хотел поинтересоваться кто нибудь знает какие технологии используются в онлайн банках типа тинькова и рокета? Спасибо и всем хорошего дня/ночи
Andrey
Диспатчите получается из обертки над запросом через store.dispatch?
у нас эффектор) поэтому там просто у подключения к апи есть тоже модель своя, у которой ивенты торчат наружу
Китикет
Диспатчите получается из обертки над запросом через store.dispatch?
Просто не вижу другого способа нормально с логикой связать (в редаксе)
Китикет
А исходный экшн ошибку получает?
Китикет
Если рефреш подразумевается, то можно делать как в пример который я выше кинул
Китикет
Если редирект надо, то наверное надо store.dispatch делать и плюсом ошибку кидать
Китикет
это ко мне?)
Ну раз не редакс, то можно не отвечать))
Китикет
Ну вообще это все индивидуально с этими токенами
Andrey
Ну раз не редакс, то можно не отвечать))
(ну сами ошибки мы к слову в приложение не отдаем, ибо вся семантика во внутреннем ивенте содержится, мол если вызвали это ивент, то это однозначно невалидный токен, без возможности рефреша, например)
Китикет
Ну вообще это все индивидуально с этими токенами
Если статус токена можно на клиенте проверить, то можно все дела делать до отправки нужного запроса Безопасности это никак не вредит, так как если токен невалидный - прилетит ошибка с основного запроса
Китикет
То есть юзер может что угодно с токеном сделать на клиенте, тем не менее ничего не случится (ну это я все со стороны jwt говорю, не знаю дают ли другие токены данные о времени жизни прямо на клиенте)
Китикет
А если куки, то по идее сервер проверяет уже валидность и время жизни, а потом просто вместе с ответом ставит новые куки
Китикет
А если куки, то по идее сервер проверяет уже валидность и время жизни, а потом просто вместе с ответом ставит новые куки
Но если токен невалидный и нужно сделать редирект на логин - то можно просто ответ проверить перед отдачей в основную логику, и если там 403 - задиспатчить то что нужно (разлогиниться)
Eugene
у меня тоже эффектор
Andrey
а как мне лучше всего перенаправлять на страницу логина после expire токена?
я ж написал, что слушать, что бек ответит в зависимости что у вас там юзается, рест, или еще чего
Китикет
🙃 if (error.code === 403) { userLoggedOut() }
Rustem
всем привет ребята, у меня перестал работатеть react-datepicker, это может быть из за версий либы?
Default
🙃 if (error.code === 403) { userLoggedOut() }
А если у пользователя прост пермишена на этот эндпоинт нет? :)
Andrey
у нас эт дело отдано на откуп беку, он сам в куку варит токен, сам его проверяет, мы только куки включаем в запросы
Default
Default
Не 200, надеюсь? :)
Bohdan
Почему мне энзим говорит что нашел 10 элементов заматченных, хотя вывод .html() показывает только один? И это постоянно так. Тесты невозможно писать без дебага каждой строчки
Китикет
Andrey
А статус какой?
401, в теле Unauthorized/Token expired 😌
Default
@AveDemid Это вроде фейсбук, кстати
Китикет
Перепутал
Китикет
получается, я могу это прямо в эффекторе делать?
Это делается в обертке над запросом, а там уже вызывается ивент эффектора / экшн редакса и так далее
Andrey
получается, я могу это прямо в эффекторе делать?
кто ж тебе запретит я бы сделал контейнер, аля createApiConnection = (config) => { const connection = axios.create(config); connection.interceptors... return { unauthenticated, $currentUser, connection, ... } }
Китикет
А вообще, буквы с клавиатуры можно по разному составить, так что вариантов чуть больше чем миллиард миллиардов чтобы написать эту логику)
Eugene
а код ошибки из axios можно достать?
Китикет
а код ошибки из axios можно достать?
Все возможно если сильно захотеть
Andrey
а код ошибки из axios можно достать?
в доку по аксиосу (спойлер: можно, axiosInstance.interceptors.response.use((err) => err.response.code))
Китикет
Но стоит помнить что аксиос для редакса в первую очередь)
Eugene
ок, спасибо, буду разбираться
Oleg
насколько целесообразно пихать данные в редакс, если они нужны только через один (или два) дочернему компоненту?
Китикет
Шо?
Локальный мем
Daniil
Локальный мем
а, эфектороеды
Oleg
вообще, есть компонент родитель, в котором есть стейт, который нужен всем дочерним. дочернии тригерят методы и меняют стейт, но кажется странным запись setState в виде пропса. или это ок?
Китикет
а, эфектороеды
Нет, это до движа с эффектором было
Daniil
Ладно сложные ребусы
Китикет
Вообще грустно что тут сделали слоу мод и запретили стикеры и гифки(
Maksim
а по делу что-то?
по делу бизнес логику в редакс
Anonymous
Вообще грустно что тут сделали слоу мод и запретили стикеры и гифки(
так вот почему мои сообщения по несколько минут отправлялись 😐 жесть как мешает))
Anonymous
особенно когда отвечают на твое сообщение быстро и предыдщий ответ становится уже не актуальный 😐
Default
я поверил(
Короче, если у тебя уже есть редакс, то и пользуйся редаксом
Default
Не надо костыли придумывать на ровном месте
Oleg
Не надо костыли придумывать на ровном месте
костыли уже придуманы. спасибо за ответ, попытаюсь сделать.
Anonymous
попробуй редактировать сообщение. иногда может пригодится.
да, так и делал, только вот вопрошающий уже не замечает корректировки 😐
Anonymous