Форум программистов, компьютерный форум, киберфорум
Angular/AngularJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 136

Редирект в случае 401 (Unauthorized)

24.12.2023, 15:50. Показов 1348. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Я делают клиента на Angular 16 (в перспективе перебраться на 17), который работает с API сервером (HTTP и WebSocket). Как лучше организовать редирект в случае получения ошибки 401 (Unauthorized)?

Для больше части приложения подходит создание Http Interceptor, который бы перехватывал ответы от сервера и в случае кода 401 сразу же редиректил. Но все это работает в случае если HTTP запрос будет отправлен из Angular приложения при помощи стандартного (ангуляровского) HttpClient.

Но как работать с WebSocket'ами или сторонними HttpClient'ами? Например, я использую SignalR (@microsoft/signalr), который при установке соединения отправляет через свой собственный HttpClient запрос, и может вернуть 401 (Unauthorized), но созданный Http Interceptor не перехватывает этот ответ.

Стоит ли пытаться заменить в SignalR HttpClient на Angular HttpClient? То есть придется создать HttpClient, унаследованный от SignalR HttpClient, в перегруженных методах которого будет использоваться Angular HttpClient. Стоит ли игра свеч? Возможно есть другие способы и практики для решения редиректа? Или не морочится и при создании SignalR самому отлавливать ответ соединения и прямо там редиректить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2023, 15:50
Ответы с готовыми решениями:

Ошибка 401 Unauthorized
Всем привет. Делаю http-запрос, работает как нужно. Но когда элементу tidhttp устанавливаю прокси то постоянно получаю ошибку...

SIP/2.0 401 Unauthorized
На внешку пока доступ АТС давать не пробовал, но мысли такие были. Так собственно сабж, как отловить попытки авторизаций. Кто что думает,...

HTTP/1.1 401 Unauthorized
First chance exception at $A1DE2E5F. Exception class EIdHTTPProtocolException with message 'HTTP/1.1 401 Unauthorized'. В чем может...

4
Эксперт .NET
 Аватар для Usaga
14087 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,934
05.01.2024, 11:30
Цитата Сообщение от MrKamaBullet05 Посмотреть сообщение
Стоит ли пытаться заменить в SignalR HttpClient на Angular HttpClient?
Нет. Я бы открыл документацию на клиент сигналовский и посмотрел что там есть. Или руками получил бы такую ошибку и посмотрел бы, что произойдёт (по любому будет исключение). От этого бы и плясал.
1
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 136
05.01.2024, 14:48  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Я бы открыл документацию на клиент сигналовский и посмотрел что там есть
В документации написано, что для установления сигнала шлется POST запрос, о чем собственно я и писал выше. Если пользователь не аутентифицирован, то этот запрос вернет ошибку 401:
Code
1
2
3
Failed to load resource: the server responded with a status of 401 (Unauthorized)
Error: Failed to complete negotiation with the server: Error: Unauthorized: Status code '401'
Error: Failed to start the connection: Error: Failed to complete negotiation with the server: Error: Unauthorized: Status code '401'
И все ок, кроме момента, что созданный ранее Http Interceptor не перехватит эту ошибку и не редиректнет пользователя. Что логично, так как в либе signalR не используется http клиент Angular.

Да, можно не ломать голову и при создании подключения сделать редирект в случае если пользователь не аутентифицирован:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    this.testHubConnection = new signalR.HubConnectionBuilder()
        .withUrl("http://localhost:5000/testHub")
        .build();
 
    this.testHubConnection.on("TestHubNotify", (message: string) => { console.log(' TestHub: ' + message) });
 
    this.testHubConnection.start()
      .then(() => console.log('Connection started'))
      .catch(err => {
        console.log('Error while starting connection: ' + err);
        if (err?.errorType === 'FailedToNegotiateWithServerError') {
          console.log('Redirect!');
          this.router.navigate(['auth']);
        }
      })
Но нет ли способа "покрасивее", чтобы редирект был завязан на Http Interceptor? Или еще как?

Цитата Сообщение от Usaga Посмотреть сообщение
Или руками получил бы такую ошибку и посмотрел бы, что произойдёт (по любому будет исключение). От этого бы и плясал.
Не понял про что это х)
0
Эксперт .NET
 Аватар для Usaga
14087 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,934
08.01.2024, 10:15
Цитата Сообщение от MrKamaBullet05 Посмотреть сообщение
Но нет ли способа "покрасивее", чтобы редирект был завязан на Http Interceptor? Или еще как?
Http Interceptor с signalR никак не пересекается) Поэтому только так, как сделал ты делается...
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,324
13.01.2024, 20:23
MrKamaBullet05, , Выбор между использованием Http Interceptor и обработкой ошибок непосредственно при создании соединения с SignalR зависит от ваших предпочтений и архитектуры приложения. Оба подхода вполне допустимы, и ваш выбор будет зависеть от конкретных требований и структуры вашего проекта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2024, 20:23
Помогаю со студенческими работами здесь

Ошибка HTTP 401.3 - Unauthorized
Всем привет, как решить данную проблему , включил на винде 8 службу IIS, далее прохожу по адресу localhost, появляется такая ошибка: Вы не...

Ошибка HTTP 401.3 - Unauthorized
Здравствуйте. Наблюдаю такую вот ошибку при размещении приложения asp.net. Подскажите как решить?

Как исправить 401 (Unauthorized)?
Здравствуйте, сделал jwt авторизацию и регистрацию. Но при проверки авторизированный ли пользователь выдаёт 401 Unauthorized отправлял...

Ошибка: http/1.1 401 unauthorized
Привет! Не могу разобраться! Делаю авторизацию вконтакте через idhttp в делфи. Авторизация делится на 2 этапа: 1) Отправка GET ссылки с...

IIS 7 Ошибка HTTP 401.3 - Unauthorized
Ошибка HTTP 401.3 - Unauthorized Вы не имеете разрешения на просмотр этого каталога или страницы в связи с конфигурацией списка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru