У меня есть два отдельных проекта: приложение с интерфейсом (угловое 2, с использованием кода Visual Studio) и приложение на задней панели (ядро ASP.NET с использованием Visual Studio 2015). Для приложения на задней панели, когда я сделал File> New Project, я выбрал «Аутентификация Windows».Выполнение вызова API из браузера работает, но не с помощью приложения front end
в свойствах, я эти коробки проверены:
Когда я делаю вызов этого API из моего браузера, он работает просто отлично:
// GET: api/card
[HttpGet]
[Authorize(Roles = ActiveDirectory.User)]
public Card[] Get()
{
var cards = _cardData.GetAll().ToList();
var result = cards
.OrderByDescending(x => x.LastChanged);
return result.ToArray();
}
Но когда я звоню от передний конец приложение, я получаю 401 ошибку:
private _cardUrl = 'http://localhost:8462/api/card';
getCards(): Observable<Card[]> {
return this._http.get(this._cardUrl)
.map((response: Response) => <Card[]>response.json())
.catch(this.handleError);
}
Я должен отметить, что, когда я удаляю эту строку, она работает просто отлично: [Authorize(Roles = ActiveDirectory.User)]
Я определенно член этой роли, она просто не распознает ее, когда я делаю вызов из приложения переднего конца, как это происходит при выполнении вызова из моего браузера.
Да, задняя часть приложения на http: // localhost: 8462, а переднее приложение находится на http: // localhost: 3000. – Derek
Затем вы должны добавить 'withCredentials', иначе браузеры не будут отправлять какие-либо учетные данные через XHR. –