2017-02-03 20 views
1

У нас есть веб-приложение на основе Angular 2 и оно извлекает данные из защищенного REST-API.Перенаправление аутентификации с помощью углов 2

После первого запроса REST-API он вернет URL-адрес с ответом перенаправления (302) для инициирования запроса GET. Угловой 2 автоматически не перенаправляется на этот URL-адрес, и запрос не выполняется. Обратите внимание, что вход в REST-API уже был выполнен с использованием централизованной системы аутентификации, и для этого перенаправления не требуется отображать страницу входа и получать данные от пользователя. Нужно только вызвать запрос GET.

Как мы можем инициировать запрос GET на предоставленный URL перенаправления (который исходит из ответа HTTP: 302) и автоматически извлекать данные?

Если мы перейдем к вызову REST-API из браузера, он автоматически перенаправится на заданный URL-адрес и вернет данные.

Угловая источник для инициирования REST-API обработки вызовов

import { Injectable } from '@angular/core'; 
import { BehaviorSubject } from 'rxjs'; 
import { Response, Headers, RequestOptionsArgs, URLSearchParams, RequestOptions } from '@angular/http'; 

this.http.get(url, options) 
      .subscribe(
       (response: Response) => { 
       // handle response 
       }, 
       (error: any) => { 
       //handle error 
       } 
      ); 

ошибка браузера консоли

enter image description here

Запрос и ответ enter image description here

ответ

0

Я в настоящее время сталкиваются с этой же проблемой, хотя для другая причина. У меня несколько микросервисов, и я использую маршрутизатор, поэтому угловой интерфейс должен знать только об этом маршрутизаторе. Теперь, когда угловой интерфейс требует определенного микросервиса, я просто вызываю маршрутизатор, который затем возвращает перенаправление на правильный микросервис. Преимущество этого заключается в том, что интерфейс должен знать только об одном микросервисе, и я могу свободно добавлять, удалять, переименовывать и т. Д. Другие микросервисы.

Это означает, что мой микросервис маршрутизатора возвращает 307 ответов почти для всего. Способ, которым я выполняю его на угловой стороне, - это просто проверить ответ на этот код состояния HTTP. Если я получу 307, я знаю, что это перенаправление маршрутизатора. Затем я могу запросить заголовок местоположения и отправить запрос на это место.

Я должен угадать, что это будет работать точно так же для вас, просто проверьте свои ответы на переадресацию кодов состояния HTTP. если вы получаете один из кодов переадресации, получите местоположение из заголовков ответов и отправьте запрос в это место.