Sdílet prostřednictvím


PrincipalPermission Třída

Definice

Upozornění

Code Access Security is not supported or honored by the runtime.

Umožňuje kontroly proti aktivnímu objektu zabezpečení (viz IPrincipal) pomocí konstruktorů jazyka definovaných pro deklarativní i imperativní akce zabezpečení. Tato třída se nemůže dědit.

public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
[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 PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
[<System.Serializable>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission
Dědičnost
PrincipalPermission
Atributy
Implementuje

Příklady

Následující příklad vyžaduje, aby byl aktivním objektem zabezpečení správce. Parametr name je null, který umožňuje každému uživateli, který je správcem, předat požadavek.

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. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem 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;

int main(array<System::String ^> ^args)
{
    System::String^ null;
    AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
    PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
      principalPerm->Demand();
      Console::WriteLine("Demand succeeded");
    return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{

    public static void Main()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
        principalPerm.Demand();
        Console.WriteLine("Demand succeeded.");
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal



Class SecurityPrincipalDemo


    Public Shared Sub Main()
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
        Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
        principalPerm.Demand()
        Console.WriteLine("Demand succeeded.")

    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í.

Předáním informací o identitě (uživatelské jméno a role) konstruktoru PrincipalPermission lze použít k vyžadování, aby identita aktivního objektu zabezpečení odpovídala tomuto údaji.

Aby se shodovaly aktivní IPrincipal a přidružené IIdentity, musí se shodovat zadaná identita i role. Pokud null se použije řetězec identity, interpretuje se jako požadavek, který odpovídá jakékoli identitě. null Použití řetězce role se bude shodovat s jakoukoli rolí. Z toho vyplývá, že předání null parametru pro name nebo role do PrincipalPermission bude odpovídat identitě a rolím v libovolném IPrincipalsouboru . Je také možné vytvořit entitu PrincipalPermission , která pouze určuje, zda IIdentity představuje ověřenou nebo neověřenou entitu. V tomto případě name a role jsou ignorovány.

Na rozdíl od většiny ostatních oprávnění neprodlužuje PrincipalPermission .CodeAccessPermission Implementuje však IPermission rozhraní. Důvodem je PrincipalPermission to, že se nejedná o přístupové oprávnění kódu; to znamená, že není uděleno na základě identity spouštěného sestavení. Místo toho umožňuje kódu provádět akce (Demand, Union, Intersectatd.) proti aktuální identitě uživatele způsobem, který je konzistentní se způsobem provádění těchto akcí pro přístup ke kódu a oprávnění identity kódu.

Důležité

Před vyžádáním oprávnění objektu zabezpečení je nutné 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

PrincipalPermission(PermissionState)
Zastaralé.

Inicializuje novou instanci PrincipalPermission třídy se zadaným PermissionStateobjektem .

PrincipalPermission(String, String)
Zastaralé.

Inicializuje novou instanci PrincipalPermission třídy pro zadané name a role.

PrincipalPermission(String, String, Boolean)
Zastaralé.

Inicializuje novou instanci PrincipalPermission třídy pro zadaný namestav ověřování , rolea .

Metody

Copy()
Zastaralé.

Vytvoří a vrátí identickou kopii aktuálního oprávnění.

Demand()
Zastaralé.

Určuje za běhu, jestli aktuální objekt zabezpečení odpovídá objektu zabezpečení určenému aktuálním oprávněním.

Equals(Object)
Zastaralé.

Určuje, zda je zadaný PrincipalPermission objekt roven aktuálnímu PrincipalPermissionobjektu .

Equals(Object)
Zastaralé.

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
FromXml(SecurityElement)
Zastaralé.

Rekonstruuje oprávnění se zadaným stavem z kódování XML.

GetHashCode()
Zastaralé.

Získá hash kód pro PrincipalPermission objekt, který je vhodný pro použití v hashovací algoritmy a datové struktury, jako je hash tabulky.

GetHashCode()
Zastaralé.

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()
Zastaralé.

Získá aktuální Type instanci.

(Zděděno od Object)
Intersect(IPermission)
Zastaralé.

Vytvoří a vrátí oprávnění, které je průsečíkem aktuálního oprávnění a zadaného oprávnění.

IsSubsetOf(IPermission)
Zastaralé.

Určuje, zda je aktuální oprávnění podmnožinou zadaného oprávnění.

IsUnrestricted()
Zastaralé.

Vrátí hodnotu označující, zda je aktuální oprávnění neomezené.

MemberwiseClone()
Zastaralé.

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()
Zastaralé.

Vytvoří a vrátí řetězec představující aktuální oprávnění.

ToXml()
Zastaralé.

Vytvoří kódování XML oprávnění a jeho aktuálního stavu.

Union(IPermission)
Zastaralé.

Vytvoří oprávnění, které je sjednocením aktuálního a zadaného oprávnění.

Platí pro

Viz také