Неавторизованный пользователь при ответе 401 (с использованием контекста) в React Native ⇐ Javascript
Неавторизованный пользователь при ответе 401 (с использованием контекста) в React Native
У меня было старое приложение, которое я рефакторингую и исправляю. Поток потребовал от меня изменить использование AsyncStorage на AuthProvider с контекстом для пользовательской сущности. Итак, у меня есть хук useAuth, где находится процесс аутентификации, и я держу пользователя в контексте. Кроме того, у меня есть класс WebService, который содержит множество функций для API:
async post(url, body, метод = 'POST') { пытаться { const ответ = ожидание выборки (urlApi + URL, { метод: метод, заголовки: ожидайте this.header(), тело: JSON.stringify(тело), перенаправление: «следовать» }); const json = ожидайте ответа.json(); если (response.status === 401) { await (новое хранилище).remove('пользователь') .then((статус) => { если (статус) { перезагрузить({ индекс: 0, маршруты: [{имя: 'Логин'}] }); } }); } вернуть JSON; } поймать (ошибка) { console.log('WS POST', ошибка); } } ... асинхронный editMessage (идентификатор, сообщение) { return await this.post('bulletin-messages/' + id, { message }, 'PUT'); } ... Раньше пользователь находился в хранилище, но теперь он находится в контексте. Все, что мне нужно изменить внутри if (response.status === 401) { ... что-то вроде setUser(null), но я не могу использовать свой перехват useAuth (с функцией updateUser()), поскольку WebService не является компонентом. Обработка перехватчиков после каждого использования моей функции в компонентах будет странной, что мне делать?
Я думал о том, чтобы заменить WebService на перехватчик, но только что понял, что использование перехватчиков внутри перехватчиков тоже неправильно.
Еще одно решение, которое может сработать, — это сокращение, но пока не уверен, сработает ли оно, и, честно говоря, предпочел бы выйти из контекста
У меня было старое приложение, которое я рефакторингую и исправляю. Поток потребовал от меня изменить использование AsyncStorage на AuthProvider с контекстом для пользовательской сущности. Итак, у меня есть хук useAuth, где находится процесс аутентификации, и я держу пользователя в контексте. Кроме того, у меня есть класс WebService, который содержит множество функций для API:
async post(url, body, метод = 'POST') { пытаться { const ответ = ожидание выборки (urlApi + URL, { метод: метод, заголовки: ожидайте this.header(), тело: JSON.stringify(тело), перенаправление: «следовать» }); const json = ожидайте ответа.json(); если (response.status === 401) { await (новое хранилище).remove('пользователь') .then((статус) => { если (статус) { перезагрузить({ индекс: 0, маршруты: [{имя: 'Логин'}] }); } }); } вернуть JSON; } поймать (ошибка) { console.log('WS POST', ошибка); } } ... асинхронный editMessage (идентификатор, сообщение) { return await this.post('bulletin-messages/' + id, { message }, 'PUT'); } ... Раньше пользователь находился в хранилище, но теперь он находится в контексте. Все, что мне нужно изменить внутри if (response.status === 401) { ... что-то вроде setUser(null), но я не могу использовать свой перехват useAuth (с функцией updateUser()), поскольку WebService не является компонентом. Обработка перехватчиков после каждого использования моей функции в компонентах будет странной, что мне делать?
Я думал о том, чтобы заменить WebService на перехватчик, но только что понял, что использование перехватчиков внутри перехватчиков тоже неправильно.
Еще одно решение, которое может сработать, — это сокращение, но пока не уверен, сработает ли оно, и, честно говоря, предпочел бы выйти из контекста
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Удаленный сервер возвратил ошибку: (401) Неавторизованный при запросе данных RestApi.
Anonymous » » в форуме C# - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-