CodeAccessPermission.PermitOnly Metoda
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í.
Zabrání volajícím v zásobníku volání používat kód, který volá tuto metodu pro přístup ke všem prostředkům s výjimkou prostředku určeného aktuální instancí.
public:
virtual void PermitOnly();
public void PermitOnly();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()
Implementuje
Výjimky
Pro aktuální rámec je již aktivní PermitOnly() .
Poznámky
Important
Metoda PermitOnly by měla být použita pouze k ochraně prostředků před náhodným přístupem plně důvěryhodným kódem. Nemělo by se používat k ochraně prostředků před úmyslným zneužitím nedůvěryhodným kódem. Pokud například metoda A vydá PermitOnly oprávnění a pak volá metodu B, metoda B může příliš přepsat PermitOnly tím, že vydá .Assert Volána metoda je vždy vyšší v zásobníku. Proto pokud se metoda B pokusí získat přístup k chráněnému prostředku, systém zabezpečení začne kontrolovat oprávnění s ním, protože metoda B je okamžitý volající, a pak přejde dolů zásobník, aby potvrdil, že v zásobníku není Deny nebo PermitOnly není. Metoda B, která se snaží získat přístup k prostředku, může zastavit zásobník chůze okamžitě pomocí Assert metody. V takovém případě se nikdy nezjistí umístěná PermitOnly do zásobníku metodou A (volající metoda).
PermitOnly je podobný jako Denyv tom, že obě způsobují selhání zásobníku, když by jinak úspěšné. Rozdíl je v tom, že Deny určuje oprávnění, která způsobí selhání procházení zásobníku, ale PermitOnly určuje jediná oprávnění, která nezpůsobí selhání procházení zásobníku.
Voláním této metody zajistíte, že váš kód lze použít pro přístup pouze k zadaným prostředkům. Volání PermitOnly je účinné, dokud se volající kód nevrátí do volajícího. V rámci rámce může být aktivní pouze jeden PermitOnly . Výsledkem pokusu o volání PermitOnly , pokud aktivní PermitOnly existuje v rámci, má za SecurityExceptionnásledek . Zavolat RevertPermitOnly nebo RevertAll odebrat aktivní PermitOnly.
PermitOnly je ignorován pro oprávnění, které není uděleno, protože požadavek na toto oprávnění nebude úspěšný. Pokud však kód nižší v zásobníku volání později volá Demand toto oprávnění, SecurityException vyvolá se při procházení zásobníku do kódu, který se pokusil volat PermitOnly. Důvodem je to, že kód, který volal PermitOnly , nebyl udělen oprávnění, i když volal PermitOnly pro toto oprávnění. Zásobník volání je obvykle reprezentován jako rostoucí dolů, takže metody vyšší ve volání zásobníku volání nižší v zásobníku volání.
Poznámky pro dědice
Tuto metodu nelze přepsat.