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.