2011-07-26 1 views
3

Windows 인증을 통해 보호되는 MVC 3 사이트가 있습니다. 그러나 사이트의 루트에 실제 파일이 있으며 인증없이 사용 가능해야하는 컨트롤러 작업 메서드 (사용자 지정 경로를 통해)가 있습니다. 이 작업을 수행하는 적절한 방법은 무엇입니까? [Authorize]을 내 컨트롤러 (또는 기본 컨트롤러 클래스) 상단에 없어도 전체 사이트가 보호되기를 바랍니다. IIS 7에서는 익명 및 Windows 인증을 사이트 루트에서 사용할 수 있습니다.Windows 인증 및 MVC : 개별 파일/경로를 제외하는 적절한 방법

현재 내의 Web.config에 다음 (해당되는 경우) 섹션이 : 내 컨트롤러의 상단에 [Authorize]을 넣지 않으면

<authentication mode="Windows" /> 
<location path="public.js"> <!-- physical file --> 
    <system.web> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</location> 
<location path="public.gif"> <!-- custom route to action method --> 
    <system.web> 
    <authorization> 
     <allow users="*"/> 
    </authorization> 
    </system.web> 
</location> 

가, 내가 자격 증명을 입력하라는 메시지가 결코하고있다. 어딘가에 <deny users="?"/>이 필요하거나 처음부터 더 좋은 방법이 있습니까?

감사합니다.

답변

0

컨트롤러 작업에 대한 인증은 [Authorize] 속성에 의해 처리되어야합니다. web.config 설정은 실제 파일에만 적용됩니다.

각 컨트롤러에 [Authorize] 특성을 지정하지 않으려면 [Authorize] 특성을 포함하는 기본 컨트롤러 클래스를 만들 수 있습니다. 이 기본 컨트롤러 클래스에서 상속 한 모든 컨트롤러는 자동으로 인증을 요구합니다.

개인적으로 필자는 각 컨트롤러에 [Authorize] 속성을 수동으로 추가하는 것이 어렵다는 것을 알지 못하며 더 세밀한 제어 수준을 선호합니다.