Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Combinazione di oggetti PrincipalPermission

Gli oggetti PrincipalPermission vengono in genere utilizzati con le stesse modalità relative agli oggetti di autorizzazione della sicurezza dall'accesso di codice. Alcuni aspetti delle funzionalità di permesso sono tuttavia più utili di altri. È ad esempio possibile richiamare il metodo Intersect per intersecare due oggetti PrincipalPermission, ma questo può non risultare particolarmente utile perché l'identità e il ruolo vengono intersecati in modo indipendente per restituire un oggetto PrincipalPermission che rappresenta l'identità e il ruolo comuni agli oggetti intersecati. In molti casi l'oggetto restituito contiene una stringa vuota per l'identità, per il ruolo o per entrambi e l'oggetto corrisponde solo a un utente non autenticato (identity = "") o a un utente che non riveste alcun ruolo (role = "").

Le operazioni di sottoinsieme determinano se un oggetto PrincipalPermission è un sottoinsieme in senso stretto di un altro oggetto PrincipalPermission. Questo significa in pratica che IsSubsetOf restituisce il valore true solo se le identità e i ruoli corrispondono esattamente o se un ruolo o un'identità è nulla. L'utilità di IsSubsetOf ai fini di questo permesso è pertanto limitata.

D'altra parte, l'esecuzione di un'operazione di unione su due oggetti PrincipalPermission può essere utile quando si desidera rappresentare in modo compatto un insieme di condizioni da testare. È ad esempio possibile ricorrere a un'operazione di unione quando si desidera verificare la presenza di una tra due identità. Il codice che segue illustra un controllo di sicurezza che ha esito positivo se l'oggetto Principal rappresenta fred o sally nel ruolo di Administrator.

String id1 = "fred";
String role1 = "Administrator";
PrincipalPermission myPrincipalPerm1 = new PrincipalPermission(id1, role1);
String id2 = "sally";
String role2 = "Administrator";
PrincipalPermission myPrincipalPerm2 = new PrincipalPermission(id2, role2);
(myPrincipalPerm1.Union(myPrincipalPerm2)).Demand();

Il codice che segue illustra come specificare l'unione di due permessi che accettano qualsiasi principale con i valori role1 e role2 del codice precedente.

((new PrincipalPermission(null, role1)).Union(new PrincipalPermission(null, role2))).Demand();

Mostra: