Welchen Vorteil erhält Ihr Code, wenn Sie ihn mit Attributen versehen, die bestimmte Sicherheitsberechtigungen erfordern?Welchen Nutzen hat Ihr Code, wenn Sie ihn mit Attributen versehen, die bestimmte Sicherheitsberechtigungen erfordern?
Antwort
Die meisten Sicherheitsberechtigungen sind besonders nützlich, wenn Sie wiederverwendbare Bibliotheken erstellen, die teilweise vertrauenswürdig ausgeführt werden. Auf diese Weise können Sie den Zugriff auf bestimmte Funktionen einschränken, wenn eine aufrufende Assembly oder AppDomain nicht über die richtigen Berechtigungen verfügt. Für eine Anwendung, die vollständig vertrauenswürdig ausgeführt wird, sind die meisten Sicherheitsberechtigungen nicht so nützlich.
Allerdings gibt es ein Attribut, das ich häufig verwende und das ist die PrincipalPermissionAttribute. Wenn Sie eine Klasse oder Funktion mit diesem Attribut dekorieren, überprüft .NET bei jedem Zugriff, ob das aktuelle Thread-Prinzip die richtigen Rechte hat. Mit anderen Worten, Sie können den Zugriff auf diesen Code basierend auf der Rolle eines Benutzers zulassen oder verweigern (rollenbasierte Sicherheit). Hier ein Beispiel:
[PrincipalPermission(SecurityAction.Demand, Role = "Managers")]
public static void ShowSalaryForEmployee(Employee employee)
{
// code here.
}
UPDATE 2017:
Die Antwort oben ist völlig veraltet. Ich habe vor einigen Jahren aufgehört, dieses spezielle Attribut zu verwenden, da es eine CLR-integrierte Codewebtechnik verwendet, die es sehr schwierig macht, Unit- und Integrationstests durchzuführen, bei denen Sie nicht speziell den Sicherheitsaspekt des Codes testen möchten.
Stattdessen fand ich es viel besser, meine eigenen Attribute zu definieren, die Berechtigungen für Operationen deklarieren (normalerweise durch Nachrichten definiert) und die Autorisierung auf der Infrastrukturebene implementieren (normalerweise mit Dekorator), anstatt sich auf Codeweben zu verlassen.
- 1. Welchen Nutzen hat ein ORM für Datenbankmetadaten?
- 2. Welchen Nutzen hat die Verwendung der eingebetteten Objectify-Klasse?
- 3. Welchen Nutzen hat die Verwendung von NginX für Node.js?
- 4. Systemanrufe nutzen welchen Modus?
- 5. Welchen Sinn hat die Verwendung von Blöcken im C# -Code?
- 6. Welchen Nutzen hat RoutedCommand 'class constructor ownertype Argument?
- 7. Welchen Ansatz können Sie in eigenen Programmen nutzen, um Updates für zukünftige Java-Versionen zu nutzen?
- 8. Welchen Nutzen hat die Verwendung von out/ref im Gegensatz zu return?
- 9. Welchen Effekt hat dieser Code in PHP?
- 10. Wie erzeuge ich eine .proto-Datei aus einer C# -Klasse, die mit Attributen versehen ist?
- 11. Wenn die Anweisung "Ihr Code wird niemals ausgeführt werden"
- 12. Urls, die bestimmte Domain hat in ihnen
- 13. Wie versehen mit Verteilungswahrscheinlichkeit
- 14. Welchen Nutzen kann Vaadin meiner GWT Appengine App bieten?
- 15. Github: Erfordern Code-Review
- 16. Welchen Speicherbedarf hat ein methodenintensives Java-Objekt?
- 17. Hat der unary + Operator einen praktischen Nutzen?
- 18. Bootstrap-Modal nur anzeigen, wenn die URL bestimmte Parameter hat
- 19. Welchen Umfang hat ngModel in AngularJS?
- 20. Welchen Zweck hat die Methode -self in NSObject-konformen Klassen?
- 21. Wie kann ich JPA nutzen, wenn Code generiert wird?
- 22. Welchen Wert hat LVM_SCROLL?
- 23. Verknüpfen Sie die Lebensdauer eines Prozesses mit der Shell, die ihn gestartet hat
- 24. Wie zielen Sie bestimmte UIViews ab, wenn Sie ihr UIA-Erscheinungsbild formatieren?
- 25. Generieren Sie Ihr Datenwörterbuch?
- 26. Welchen Unterschied hat "var" bei Feldmeldungen?
- 27. Welchen Rahmen hat diese Website?
- 28. Wie Sie die störende Intellisense-Notiz in einer Klasse deaktivieren, die Mitglieder mit CLIEvent-Attributen hat?
- 29. Welchen Vorteil hat die Verwendung eines HyperlinkedModelSerializers in DRF?
- 30. Welchen Vorteil hat WSDualHttpBinding in WCF?