PrincipalPermissionAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Upozornění
Code Access Security is not supported or honored by the runtime.
Umožňuje použít akce zabezpečení pro PrincipalPermission pro kód pomocí deklarativního zabezpečení. Tuto třídu nelze dědit.
public ref class PrincipalPermissionAttribute sealed : System::Security::Permissions::CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Serializable]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Serializable>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermissionAttribute = class
inherit CodeAccessSecurityAttribute
Public NotInheritable Class PrincipalPermissionAttribute
Inherits CodeAccessSecurityAttribute
- Dědičnost
- Atributy
Příklady
Následující příklad ukazuje, jak PrincipalPermissionAttribute se třída používá deklarativně k požadavku, aby aktuální uživatel byl správcem.
Poznámka
Ve Windows Vista nástroj Řízení uživatelských účtů (UAC) určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který vyžaduje, abyste měli oprávnění správce, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Když spustíte aplikaci, můžete to udělat tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete spustit jako správce.
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Policy;
using namespace System::Security::Principal;
[PrincipalPermission(SecurityAction::Demand, Role = "Administrators")]
void CheckAdministrator()
{
Console::WriteLine("User is an administrator.");
}
int main(array<System::String ^> ^args)
{
try
{
// Must set PrincipalPolicy to WindowsPrincipal
AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
// Check using declarative security.
CheckAdministrator();
// Check using Imperative security.
System::String^ null;
PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
principalPerm->Demand();
Console::WriteLine("Demand succeeded");
}
catch (Exception ^e)
{
Console::WriteLine(e->Message);
}
return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;
class SecurityPrincipalDemo
{
public static void Main()
{
try
{
// PrincipalPolicy must be set to WindowsPrincipal to check roles.
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
// Check using the PrincipalPermissionAttribute
CheckAdministrator();
// Check using PrincipalPermission class.
PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
principalPerm.Demand();
Console.WriteLine("Demand succeeded.");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
static void CheckAdministrator()
{
Console.WriteLine("User is an administrator");
}
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal
Class SecurityPrincipalDemo
Public Shared Sub Main()
Try
' PrincipalPolicy must be set to WindowsPrincipal to check roles.
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
' Check using the PrincipalPermissionAttribute
CheckAdministrator()
' Check using PrincipalPermission class.
Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
principalPerm.Demand()
Console.WriteLine("Demand succeeded.")
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
<PrincipalPermission(SecurityAction.Demand, Role:="Administrators")> _
Shared Sub CheckAdministrator()
Console.WriteLine("User is an administrator")
End Sub
End Class
Poznámky
Upozornění
Zabezpečení přístupu kódu (CAS) bylo zastaralé ve všech verzích rozhraní .NET Framework a .NET. Nedávné verze rozhraní .NET nedodržují poznámky CAS a při použití rozhraní API souvisejících s cas vytvářejí chyby. Vývojáři by měli hledat alternativní způsoby provádění úloh zabezpečení.
PrincipalPermissionAttribute lze použít k deklarativnímu požadavku, aby uživatelé s vaším kódem patřili do zadané role nebo byli ověřeni. Použití vytvoří Unrestricted s Authenticated nastavenou PrincipalPermission na true
a Name a Role nastavenou na null
.
Rozsah deklarace, která je povolena, závisí na použitém rozsahu SecurityAction . PrincipalPermissionAttribute nelze použít na úrovni sestavení.
Informace o zabezpečení deklarované atributem zabezpečení jsou uloženy v metadatech cíle atributu a systém k tomu přistupuje za běhu. Atributy zabezpečení se používají pouze pro deklarativní zabezpečení. Pro imperativní zabezpečení použijte odpovídající třídu oprávnění.
Důležité
Než použijete tuto třídu k vyžádání oprávnění objektu zabezpečení, musíte nastavit zásadu zabezpečení aktuální domény aplikace na hodnotu WindowsPrincipalvýčtu . Ve výchozím nastavení je zásada zabezpečení nastavená na UnauthenticatedPrincipal. Pokud nenastavíte zásadu zabezpečení na WindowsPrincipal, požadavek na oprávnění objektu zabezpečení selže. Před vyžádáním oprávnění objektu zabezpečení by se měl spustit následující kód: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).
Konstruktory
PrincipalPermissionAttribute(SecurityAction) |
Zastaralé.
Inicializuje novou instanci PrincipalPermissionAttribute třídy se zadaným SecurityActionobjektem . |
Vlastnosti
Action |
Zastaralé.
Získá nebo nastaví akci zabezpečení. (Zděděno od SecurityAttribute) |
Authenticated |
Zastaralé.
Získá nebo nastaví hodnotu označující, zda aktuální objekt zabezpečení byl ověřen základním zprostředkovatelem zabezpečení na základě role. |
Name |
Zastaralé.
Získá nebo nastaví název identity přidružené k aktuálnímu objektu zabezpečení. |
Role |
Zastaralé.
Získá nebo nastaví členství v zadané roli zabezpečení. |
TypeId |
Zastaralé.
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu . (Zděděno od Attribute) |
Unrestricted |
Zastaralé.
Získá nebo nastaví hodnotu určující, zda je deklarováno úplné (neomezené) oprávnění k prostředku chráněného atributem. (Zděděno od SecurityAttribute) |
Metody
CreatePermission() |
Zastaralé.
Vytvoří a vrátí nový PrincipalPermission. |
Equals(Object) |
Zastaralé.
Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
GetHashCode() |
Zastaralé.
Vrátí hodnotu hash pro tuto instanci. (Zděděno od Attribute) |
GetType() |
Zastaralé.
Získá aktuální Type instanci. (Zděděno od Object) |
IsDefaultAttribute() |
Zastaralé.
Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu. (Zděděno od Attribute) |
Match(Object) |
Zastaralé.
Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
MemberwiseClone() |
Zastaralé.
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Zastaralé.
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zastaralé.
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Zastaralé.
Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní. (Zděděno od Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Zastaralé.
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Zastaralé.
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od Attribute) |