2010-12-06 3 views
1

ASP.NET MVC에서 폼 인증을 사용하고 있습니다. 응용 프로그램 수준에서 web.config 내에서 다음과 같이 인증이 필요한 경로를 설정할 수 있습니다.ASP.NET MVC 동적 경로에 대한 인증

<location path="subdir1"> 
<system.web> 
    <authorization> 
     <allow users ="?" /> 
    </authorization> 
</system.web> 
</location> 

디렉토리 subdir1는 뷰 폴더 내 폴더 이름입니다. 이 방법은 웹 페이지를 siteurl.com/subdir1으로 라우팅합니다.

그러나 내 하위 디렉토리가 다른 동적으로 생성 된 경로 아래에 있으면이 설정이 작동하지 않습니다. 예를 들면; siteurl.com/dynamic/subdir1은 인증을 요청하지 않습니다. 동적은 런타임에 생성되며 web.config는 응용 프로그램 시작시이를 알지 못하지만 걱정하지 않아도됩니다. subdir1 경로에 액세스 할 때마다 인증을 요청해야합니다.

이 경우 위치의 경로 속성을 설정할 수있는 방법이 있습니까? 또는이 문제를 해결할 다른 방법이 있습니까?

도움을 주시면 감사하겠습니다. cas sakal

답변

4

당신은 적절한 조치 또는 컨트롤러의 Authorize 속성을 사용하여 권한을 제어 할 수 있습니다.

[Authorize] 
public ActionResult MyAction() 
{ 
    //stuff 
} 

일부 자세한 내용은 ASP.NET MVC Authorization

에서 찾을 수 있습니다
1

컨트롤러에 매핑되는 경로에 대한 web.config 파일에서 액세스를 설정하는 대신 컨트롤러/동작에 AuthorizeAttribute을 사용해야합니다. 모든 작업에 로그인 한 사용자가 필요하지 않은 경우 권한 부여가 필요한 작업 (메소드)에만 속성을 적용해야합니다.

[Authorize] 
public class ProtectedController : Controller 
{ 
    // all actions in this controller require the user to be logged in 
} 

public class MixedController : Controller 
{ 
    [Authorize] 
    public ActionResult ProtectedAction() 
    { 
     // this action requires the user to be logged in 
    } 

    public ActionResult PublicAction() 
    { 
     // this action is available to anonymous users 
    } 
}