동일한 프로젝트에 Web API 및 MVC 5가 있습니다. 즉, 웹 API는 베어러 토큰 보호 (하지만 난 SuppressDefaultHostAuthentication 라인을 주석, 그래서 쿠키 MVC로 인증하고 때 브라우저에서 API에 액세스 할 수 있습니다)입니다MVC 컨트롤러 (쿠키 인증)에서 웹 API를 호출
이제 미안은 MVC 컨트롤러에서 API에 액세스하려고 토큰을 보내지 않고 SuppressDefaultHostAuthentication을 해제 할 수 있습니까? 그 불가능하면
HttpClientHandler handler = new HttpClientHandler()
{
PreAuthenticate = true,
UseDefaultCredentials = true
};
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri("http://localhost:11374/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync("api/MyApi").Result;
if (response.IsSuccessStatusCode)
{ }
}
, 어떻게 그 문제를 처리하는 가장 좋은 방법입니다
성공 (401 오류)없이 것을 시도?
기술적으로는 정상적인 클래스와 같은 컨트롤러를 인스턴스화 (요청 - 파이프 라인을 거치지 않고)하면 '권한 부여'와 같은 일부 특성을 처리하기 때문에 (요청 - 파이프 라인의 컨텍스트에서 작동하기 때문에) . 그러나 이런 방식으로 작업을 수행하면 작업에서 인증 (즉, '사용자')에 의존하는 경우 문제가 발생할 수 있습니다. –
웹 API 작업의 코드를 클래스 라이브러리로 분석하는 것이 훨씬 나을 것입니다. 클래스 라이브러리로 웹 API와 MVC 프로젝트 모두가 요청 파이프 라인 외부에서 직접 웹 API를 사용하는 대신 활용할 수 있습니다. –