2009-03-02 7 views
3

Quelle est la meilleure façon d'implémenter la sécurité à l'aide de rôles de répertoire actifs sur un site de données dynamiques asp.net?Comment implémenter la sécurité basée sur les rôles à l'aide de Dynamic Data et Active Directory?

Je souhaite limiter certaines vues (et les liens associés) à certains rôles. -à-dire l'utilisateur A ne peut les actions de la liste de vues pour la table x et l'utilisateur B ne peuvent actions de la liste de vues pour la table y

Répondre

0

Vous pouvez simplement utiliser Active Directory ASP.NET Memebrship & fournisseurs de rôle pour authentifier \ autoriser les utilisateurs à l'application . Ensuite, vous pouvez appeler le Roles.IsUserInRole où vous voulez vérifier l'appartenance au rôle AD pour vérifier que les utilisateurs font partie du ou des groupes concernés avant de rendre le contenu.

2

Je l'ai fait dans de nombreuses applications.

L'authentification Windows est activée pour votre application.

Créez un objet pouvant stocker les informations d'identification de l'utilisateur et stocker cet objet dans la session pour une récupération rapide. Si ce n'est pas le cas, vous pouvez le reconstruire rapidement. J'ai habituellement chaque rôle défini sur un bit par exemple:


enum USER_ROLE : int 
{ 
    Role1 = 1, 
    Role2 = 2, 
    Role3 = 4, 
    Role4 = 8, 
    etc 
} 

if (Context.User.IsInRole("Roll1Name")) YourUserObject.Roles += USER_ROLE.Role1; 
if (Context.User.IsInRole("Roll2Name")) YourUserObject.Roles += USER_ROLE.Role2; 
etc 

ensuite à chaque fois qu'un contrôle doit être assuré, je passe dans une fonction qui prend une HtmlControl et une propriété en fonction du rôle de l'utilisateur et l'exigence de sécurité pour ce contrôle.

Par exemple. bool SetControlSecurity (HtmlControl ctrl, int iUserRoles, int iControlRoles, ACTION eAction)

donc un exemple pour faire un groupe spécial pourrait être:

SetControlSecurity (pnlUserInfo, YourUserObject.Roles, eRole.Role2, ACTION.Hide);

D'habitude, j'ai aussi prendre dans un param du type d'action à effectuer sur fail de la sécurité comme peau, en lecture seule, les données claires, etc ...

En comparant le rôle dans la fonction est facile:


bool bHasAccess = ((iUserRole & iControlRoles) > 0); 
if (bHasAcess) 
{ 
    // leave the control or make sure it is visible etc 
} 
else 
{ 
    // take action to secure the control based on the action 
} 

Espérons que ça aide.

Questions connexes