quelqu'un peut-il expliquer le comportement C# suivant? J'ai écrit une petite application console juste pour en apprendre davantage sur CAS, mais je ne peux pas l'air de comprendre pourquoi les lignes suivantes de travail de code comme ils le font:Comportement SecurityManager.IsGranted()
string[] myRoles = new string[] { "role1", "role2", "role3" };
GenericIdentity myIdentity = new GenericIdentity("myUsername", "customAuthType");
GenericPrincipal myPrincipal = new GenericPrincipal(myIdentity, myRoles);
System.Threading.Thread.CurrentPrincipal = myPrincipal;
Console.WriteLine(SecurityManager.IsGranted(new PrincipalPermission(null, "role1")));
Console.WriteLine(SecurityManager.IsGranted(new PrincipalPermission(null, "roleX")));
La sortie est « true » pour les deux SecurityManager.IsGranted () appels.
Si je puis ajouter les lignes suivantes:
new PrincipalPermission(null, "role1").Demand();
new PrincipalPermission(null, "roleX").Demand();
le premier passe l'appel de la demande, mais la deuxième (comme prévu) provoque une SecurityException.
Pourquoi l'appel SecurityManager.IsGranted() ne renvoie-t-il pas la valeur false pour l'autorisation "roleX"?