2012-08-01 6 views
1

Admin 스크린에 다음과 같은 로직이 있습니다. Logs 화면에서도 비슷한 논리가 필요합니다. 따라서이 논리를 기본 페이지로 옮길 계획입니다. 기본 페이지에서 현재 페이지를 어떻게 인식합니까? (관리자 화면과 로그 화면은 어떻게 구별합니까?).ASP.Net Base 페이지의 페이지 특정 정보 얻기

페이지에 따라 구성에서 검색된 값이 다릅니다.

이것을 달성하는 다른 방법은 무엇입니까? 이러한 접근법 중에서 가장 좋은 방법은 무엇입니까?

 //Admin Screen 
     List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings["AdminScreenRoles"]).Split(',')) 
     if (!authorizedRoles.Contains(userRole)) 
     { 
      Response.Redirect("UnauthorizedPage.aspx"); 
     } 

    //Logs Screen 
     List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings["LogsScreenRoles"]).Split(',')) 
     if (!authorizedRoles.Contains(userRole)) 
     { 
      Response.Redirect("UnauthorizedPage.aspx"); 
     } 

답변

2

상속받은 클래스를 인식하는 코드는 삽입하지 마십시오. 자식이 재정의해야하는 추상 속성을 추가합니다.

public abstract string AppSettingsRolesName { get; } 

List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings[AppSettingsRolesName]).Split(',')) 
if (!authorizedRoles.Contains(userRole)) 
{ 
    Response.Redirect("UnauthorizedPage.aspx"); 
} 

로그 : 기본에서

관리자에서
public override string AppSettingsRolesName 
{ 
    get { return "LogsScreenRoles"; } 
} 

: 가장 쉬운 방법은 것이이 모든 것을 처리하는 등, 폼 인증을 조사하는 것입니다

public override string AppSettingsRolesName 
{ 
    get { return "AdminScreenRoles"; } 
} 
0

구성 파일을 통해. 웹 주위에 점선이 좋은 기사의 숫자가 있습니다 - 여기 하나 :

http://ondotnet.com/pub/a/dotnet/2003/01/06/formsauthp1.html

그러나 빠른 수정을 찾고 있다면, 가장 쉬운 방법은 기본 페이지에 코드를 이동하는 것입니다 인터페이스 속성을 사용하여 상속 된 페이지가 어떤 역할 유형을 사용하는지 나타냅니다. 예를 들어 의 라인을 따라 뭔가 : 당신이 그것을 제대로 수행하려는 경우

public abstract class BasePage : Page 
{ 
    protected abstract string AuthorisedRoles { get; } 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 

     List<string> authorizedRoles = new List<string>((ConfigurationManager.AppSettings[this.AuthorisedRoles]).Split(',')); 
     if (!authorizedRoles.Contains(userRole)) 
     { 
      Response.Redirect("UnauthorizedPage.aspx"); 
     } 
    } 
} 

public class LogsPage : BasePage 
{ 
    protected override string AuthorisedRoles 
    { 
     get { return "LogsScreenRoles"; } 
    } 
} 

public class AdminPagePage : BasePage 
{ 
    protected override string AuthorisedRoles 
    { 
     get { return "AdminScreenRoles"; } 
    } 
} 

하지만 심각, 폼 인증을 들여다 - 그것은 처음 보이는 복잡하지 않습니다.

관련 문제