Objetos PrincipalPermission
O modelo de segurança baseada em função aceita um objeto de permissão semelhante aos objetos de permissão, encontrados no modelo de segurança de acesso a código. Este objeto, PrincipalPermission, que representa a identidade e função que uma determinada classe de entidade deve ter para executar. Você pode usar o PrincipalPermission classe para ambas as verificações de segurança imperativas e declarativas.
Para implementar a PrincipalPermission classe imperativa, criar uma nova instância da classe e inicializá-lo com o nome e a função que você deseja que os usuários tenham que seu código de acesso. Por exemplo, o código a seguir inicializa uma nova instância desse objeto com uma identidade de "Joan" e uma função de "Teller".
String id = "Joan";
String role = "Teller";
PrincipalPermission principalPerm = new PrincipalPermission(id, role);
Dim id As String = "Joan"
Dim role As String = "Teller"
Dim principalPerm As New PrincipalPermission(id, role)
Você pode criar uma permissão semelhante declarativamente usando a PrincipalPermissionAttribute classe. O código a seguir declarativamente inicializa a identidade de "Joan" e a função "Teller".
[PrincipalPermissionAttribute(SecurityAction.Demand, Name = "Joan", Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Name := "Joan", Role := "Teller")>
Quando a verificação de segurança é executada, a identidade especificada e a função devem corresponder para a verificação seja bem-sucedida. No entanto, quando você cria o PrincipalPermission o objeto, você pode passar uma seqüência de caracteres de identidade null para indicar que a identidade da entidade de segurança pode ser qualquer coisa. Da mesma forma, passar uma seqüência de função nulo indica que a entidade pode ser um membro de qualquer função (ou nenhuma das funções todos). Para obter segurança declarativa, o mesmo resultado pode ser obtido omitindo ou propriedade. Por exemplo, o código a seguir usa a PrincipalPermissionAttribute para declarativamente indicar que uma entidade pode ter qualquer nome, mas deve ter a função de teller.
[PrincipalPermissionAttribute(SecurityAction.Demand, Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Role := "Teller")>