2

간단한 폼 인증을 사용하는 웹 사이트에서 데이터베이스의 자격 증명을 확인했습니다. 그것은 그대로 잘 작동합니다. 내 <system.web> 내가 가지고있는 의 Web.config 내 :MVC 및 WebAPI 웹 사이트의 인증

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
</authentication> 

지금의 개체의 목록을 뽑아 응용 프로그램에 대한 사이트에 작은 WebApi 컨트롤러를 추가 할 필요가있다. WebApi 인증이 진행되는 한 기본 인증이 정상적으로 작동하는 것 같습니다. 요청 헤더에 인코딩되어 쉽게 전달 될 수있는 애플리케이션의 사용자 자격 증명을 갖게됩니다.

내 문제는 MVC 및 WebApi 인증과 차별화됩니다. 우선, 내 솔루션은 좋은 아이디어이며 쉽게 구현할 수 있습니까? 현재 내 WebApiConfig.cs에서 내가 가진 :

GlobalConfiguration.Configuration.MessageHandlers.Add(new BasicAuthenticationHandler(new AuthenticationService())); 

BasicAuthenticationHandler은 헤더의 자격 증명을 찾습니다. 그러나 MVC 폼 인증을 사용하면 해당 영역에 액세스 할 수 없습니다. 피 들러 (Fiddler)에서 작업을 수행하면 MVC 계정/로그인 페이지로 직접 리디렉션되는 것을 볼 수 있습니다. 내 WebAPI 호출에 대한 리디렉션을 피하려면 어떻게해야합니까?

안내해 주셔서 감사합니다.

답변

1

글쎄, 그것은 간단한 수정처럼 보입니다. 의 Web.config 코드 후 직통 나는 위와 같이 보았다 :

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 

authorization 요소가 완전히 내가 가진 모든 [AllowAnonymous] 덮어 쓰기 한 것 같습니다 - 익명에 도달하기 위해 로그인 페이지를 유일하게 가능한 방법을했다 . 그 3 줄을 완전히 제거하면 내 문제가 해결되었습니다. 이제 WebAPI 페이지에 [AllowAnonymous] 속성을 사용하고 기본 인증을 올바르게 적용합니다.