2010-03-04 4 views
2

특정 정보에 대한 액세스를 제어하는 ​​시스템을 설계해야합니다. 사용자로부터의 요구 사항은 액세스 레벨을 사용하는 것입니다.ASP.NET 역할을 사용하여 다양한 액세스 수준 표시

Level 1 - Support 
Level 2 - Manager 
Level 3 - Senior Manager 
Level 4 - Department Head 
etc. 

특정 정보가 레벨 1로 표시된 경우 모든 역할이 해당 정보를 볼 수 있어야합니다. 레벨 3으로 표시되면 선임 관리자 및 부서장 만 볼 수 있지만 관리자 및 지원 역할은이를 볼 수 없습니다.

질문

  • 나는 정보의 조각에 대한 액세스 수준을 할당

    , 나는 나에게이 기능을 달성하기 위해서는 그것에 여러 역할을 할당 할 것인가?
  • 더 좋은 방법이 있나요?

답변

1

역할을 글로벌 enum에 매핑하여 열거 형의 순서가 액세스 우선 순위 예 :

public enum SecurityGroup 
{ 
    Support, Manager, SeniorManager, DepartmentHead 
} 

분명히 이러한 역할은 공급자 역할과 일치해야합니다.

if (currentUserSecurityGroup <= SecurityGroup.SeniorManager) 
    // do stuff 
: 당신이 당신의 그룹에 대한 상대적 위치를 확인할 수

var currentUserSecurityGroup = (SecurityGroup)Enum.Parse(typeof(SecurityGroup), Roles.GetRolesForUser(username)); 

을 이제 : 당신은 다음과 같이 GetRolesForUser에서 값을 캐스팅 Enum.Parse을 사용

1

web.config에서 역할/레벨을 추가하고 역할을 추가해야합니다.이 역할은 어떤 페이지를 가져올 수 있습니다. PLZ 특정 역할에 대한 페이지에 대한 몇 가지 특정 정보를 숨기려면,이 같은 할 수 http://msdn.microsoft.com/en-us/library/aa480476.aspx http://devhood.com/tutorials/tutorial_details.aspx?tutorial_id=85

이러한 URL을 확인 자세한 내용은

<location path="yourPage.aspx"> 
    <system.web> 
      <authorization> 
       <deny users="?"/> 
       <allow roles="Manager"/> 
       <deny users="Department Head"/> 
      </authorization> 
    </system.web> 

...

if (System.Web.HttpContext.Current.User.IsInRole("Support")) 
     { 
      pnl.Visible = false;//try to put your user specific details in panel to hide/show 
     } 
관련 문제