2010-03-04 16 views
2

Je dois concevoir un système qui contrôlera l'accès à certaines informations. L'exigence de l'utilisateur est d'utiliser des niveaux d'accès, par ex. Si une certaine information est marquée comme niveau 1, tous les rôles devraient être en mesure d'afficher cette information. S'il est marqué au niveau 3, seul le responsable principal et le chef de département peuvent l'afficher, mais les rôles Gestionnaire et Support ne peuvent pas l'afficher.Utilisation de rôles ASP.NET pour représenter différents niveaux d'accès

Questions

  • Lorsque j'attribue le niveau d'accès à une information, ce que je dois affecter plusieurs rôles à elle pour que moi de réaliser cette fonctionnalité?
  • Y a-t-il une meilleure façon de procéder?

Répondre

1

Mappez vos rôles à une énumération globale de sorte que l'ordre de l'énumération représente le priorité d'accès par exemple:

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

Il est évident que ces rôles doivent correspondre à vos rôles de fournisseur. Vous pouvez ensuite utiliser Enum.Parse pour lancer la valeur de GetRolesForUser comme ceci:

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

Maintenant, vous pouvez vérifier la position relative par rapport à votre groupe:

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

vous devez implémenter l'authentification de formulaire avec et ajouter vos rôles/niveau dans web.config, quel rôle peut obtenir quelle page.

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

Pour plus de détails plz vérifier ces URL http://msdn.microsoft.com/en-us/library/aa480476.aspx http://devhood.com/tutorials/tutorial_details.aspx?tutorial_id=85

si vous souhaitez masquer des informations spécifiques à la page contre le rôle spécifique, vous pouvez le faire comme ...

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