2010-12-09 6 views
6

사이트를 볼 수있는 사용자를 제어하는 ​​사용자 지정 HttpModule을 만들려고합니다.사용자 인증 용 HttpModule은 Windows 인증과 어떻게 상호 작용합니까?

저는 Windows 인증을 활용하려고합니다.

if (HttpContext.Current.User.Identity.Name.Contains("jsmith")) 
{ 
    Response.Write("You do not have the correct permissions to view this site."); 
    Response.End(); 
} 

을하지만 응용 프로그램 수준에서이 더 구성 만들고 싶어하기 때문에, 나는 HttpModule의를 사용하고 싶습니다 : 개별 페이지에

, 나는 아마 같은 것을 할 것입니다.

using System; 
using System.Web; 

public class CustomAuthHttpModule : IHttpModule 
{ 
    public void Dispose() { } 

    public void Init(HttpApplication context) 
    { 
     context.BeginRequest += new EventHandler(OnBeginRequest); 
     context.EndRequest += new EventHandler(OnEndRequest); 
    } 

    void OnBeginRequest(object sender, EventArgs e) { } 

    void OnEndRequest(object sender, EventArgs e) 
    { 
     HttpApplication appObject = (HttpApplication)sender; 
     HttpContext contextObject = appObject.Context; 

     if (contextObject.User.Identity.Name.Contains("jsmith")) 
     { 
      contextObject.Response.Clear(); 
      contextObject.Response.End(); 
     } 
    } 
} 

나는 내가 OnBeginRequest() 함수에 넣을 수 있다면, 내가 가지고있는 코드를 사용하여 괜찮을 것 : 여기

내가 코드를 만든 시작이다. 그러나 OnEndRequest()가 실행될 때까지 HttpContext 개체에는 User 속성이 만들어지지 않습니다.

코드를 먼저 실행하면 일부 사용자가 막 다른 곳에서 액세스를 차단하기 때문에이 출력을 생성하는 추가 작업을 수행하지 못하게됩니다.

누군가가 해결책을 제안 할 수 있습니까? 내 인증 모듈이 Windows 인증 모듈 이전에 실행 중이거나 그 이유는 무엇입니까?

... 또는 IIS 또는 파일 시스템 사용 권한으로 수행하려는 작업을 수행하는 더 쉬운 방법이 있습니까?

+2

당신은 IIS가 당신을 위해 이렇게 내버려 단지 해달라고 이유가 있나요? 또는 web.config에서''기능을 사용 하시겠습니까? – CodingGorilla

+0

무슨 뜻인지 설명해 주시겠습니까? 기능을 검색하여 해당 내용을 확인합니다. IIS가 "나를 위해이 일을 어떻게"합니까? – vwfreak

+0

''! 굉장해. 코멘트가 아니라 하나라면 답으로 표시하겠습니다. 감사! – vwfreak

답변

0

global.aspx에서 메서드를 구현하려고 시도 했습니까? OnSessionStart? 게다가 contains 및 username 대신 hasRole 또는 다른 그룹 -Property를 사용합니다.

+0

global.asax 파일을 사용할 수 있음을 이해합니다. 어쩌면 그것이 더 나은 해결책이지만 HttpModules의 작동 방식을 이해하려고 노력하고있었습니다. 언제 HttpModule을 사용할 수 있습니까? – vwfreak

+0

나는 사용자 이름에 대해 말하는 것을 얻는다. 그건 의미가 있습니다. – vwfreak

+0

로그인이 아니라 액세스 가능성이 있습니다. 이 시점에서 나는 너를 잘못 이해했다. 또는 기록 용. HttpModule은 필터와 비슷합니다. – Christian

관련 문제