2010-03-04 64 views
2

我需要設計一個系統來控制對特定信息的訪問。用戶的要求是使用訪問級別,例如使用ASP.NET角色來表示不同的訪問級別

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

如果某一塊的信息被標記爲級別1,則所有角色應該能夠查看該資料片。如果它被標記爲3級,則只有高級經理和部門負責人可以查看它,但經理和支持角色無法查看它。

問題

  • 當我指定的訪問權限級別的一條信息,我將有多個角色分配給它爲了讓我實現這個功能呢?
  • 有沒有更好的方法來做到這一點?

回答

1

將您的角色映射到全局枚舉,使枚舉的順序代表訪問優先權例如:

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

很明顯,這些角色應該與您的提供者角色相匹配。這樣,你會使用Enum.Parse從GetRolesForUser投的價值,像這樣:

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

現在,你可以檢查的相對位置對你的組:

if (currentUserSecurityGroup <= SecurityGroup.SeniorManager) 
    // do stuff 
1

您需要實現表單身份驗證並在web.config中添加您的角色/級別,哪個角色可以獲取哪個頁面。

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

詳情PLZ檢查這些URL http://msdn.microsoft.com/en-us/library/aa480476.aspx http://devhood.com/tutorials/tutorial_details.aspx?tutorial_id=85

,如果你想隱藏針對特定角色頁面上的某些特定信息,你可以做到這一點像...

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