2

영역이있는 mvc 응용 프로그램을 만들고 있습니다. 이 영역에 대해 다른 인증 방법이 필요합니다.MVC3 영역의 인증

일반적으로 http 모듈에서 인증을 위해 httpmodules를 사용합니다. 사용자가 인증되었는지 (보통 쿠키를 사용하는지) 확인하고 그렇지 않으면 리디렉션합니다.

그래서 전체 응용 프로그램을 인증하기위한 httpmodule이 있고이 영역에서 인증을위한 다른 httpmodule을 등록하려고합니다.

내가 시도 :

  1. 지역 폴더에 web.config 파일을 사용하고 거기에 HttpModule을 나열.
  2. web.config 파일의 위치 섹션 사용.

둘 모두 나를 위해 작동하지 않았다 httpmodule 전화 한 적이 없어.

  1. 영역에 httpmodule을 등록하려면 어떻게해야합니까?
  2. 전체 앱의 httpmodule을 어떻게 재정의 할 수 있습니까?
  3. 이것이 잘못된 방법 일 경우 더 나은 방법입니다.

감사

답변

2

당신은 항상 당신이 AuthorizeCore를 오버라이드 (override) 사용자 정의 AuthorizeAttribute를 작성할 수 있습니다. 이 함수에서는 항상 특정 loginurl로 리디렉션 할 수 있습니다. Web.config의

에 정의 된 사용자가 리디렉션을 포함하지 않는 경우

public class CustomAuthorizationAttribute : AuthorizeAttribute 
{ 
    private string notifyUrl = string.Format("{0}{1}", GeneralHelper.BaseSiteUrl, "Login"); 

    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext.User.Identity.IsAuthenticated) 
     { 
      // get userinformation 
      return true; 
     } 

     httpContext.Response.Redirect(NotifyUrl); 
     return false; 
    } 
} 

, 그것은 리디렉션 줘야 loginurl