2010-06-13 2 views
0

Je suis en train de comprendre la sécurité basée sur les rôles et j'ai la méthode suivante:Rôle de sécurité Basé dans le groupe Windows Administrateurs

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")] 
static void Test() 
{ 
    //administratos only can call this code 
} 

Ce que je veux faire est que seuls les utilisateurs qui sont membres du groupe Administrateurs Windows peut appeler ce code, cependant, si je fais ce qui suit, cela fonctionne:

GenericIdentity genericIdentity = new GenericIdentity("test", "test"); 
GenericPrincipal genericPrincipal = new GenericPrincipal(genericIdentity, new string[] { "Administrators" }); 
AppDomain.CurrentDomain.SetThreadPrincipal(genericPrincipal); 

Test(); 

Alors, comment puis-je le faire fonctionner que si l'utilisateur est dans le groupe windows Administrateurs?

merci!

Répondre

1

Avez-vous défini PrincipalPolicy? Vous en avez besoin pour vérifier les rôles sur les groupes Windows.

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal) 
+0

où dois-je ajouter cette ligne de code? à l'intérieur de ma méthode protégée Test? –

+0

Vous l'ajouteriez quelque part dans le code de démarrage de votre application. Vous voudriez avoir la politique définie avant que vous essayiez d'exiger la sécurité. –

Questions connexes