Frage

Zur Zeit verwende ich [autorisieren (Roles = ".....")] meine Controller-Aktionen auf meinem ASP.NET MVC 1 App zu sichern, und das funktioniert gut. Allerdings müssen bestimmte Such Ansichten Tasten, diesen Weg zu diesen Aktionen haben, die auf der Grundlage der Aufzeichnung auf der Suchliste, und auch die Sicherheit privs des Benutzers angemeldet.

ausgewählt aktiviert / deaktiviert werden müssen,

Deshalb denke ich, ich brauche eine Klasse haben eine DB-Tabelle zugreifen, die Querverweise diese Zielsteuerung / Aktionen mit Anwendungsrollen den Zustand dieser Tasten zu bestimmen. Dies wird offensichtlich, die Dinge chaotisch wie privs wird in 2 Plätze gehalten werden müssen - in dieser Klasse / DB-Tabelle und auch auf den Controller-Aktionen (plus, wenn ich den Zugriff auf die Aktion ändern möchten werde ich das ändern müssen Code und kompiliert, anstatt nur einen DB-Tabelleneintrag ändern).

Im Idealfall würde Ich mag die [autorisieren] Funktionalität zu erweitern, so dass anstatt die Rollen in der [autorisieren] Code angeben, wird die Sicherheitsklasse Abfrage auf der Basis der Benutzer, Controller und die Aktion und das wird dann wieder ein boolean ermöglicht oder den Zugriff verweigern. Gibt es gute Artikel zu diesem Thema - ich, es ist eine ungewöhnliche Sache nicht vorstellen kann, tun zu wollen, aber ich scheine kämpfen zu werden, etwas zu finden, wie man es tun (könnte Montag-Morgen Gehirn). Ich habe einige Codes dies zu tun, mit Blick auf Artikel http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/ , und es scheint Anfahren ok, aber ich werden kann nicht den „richtigen“ Weg finden, um die Aufruf-Controller und Auslösewerte aus der Httpcontext zu bekommen - ich vielleicht ein Stück Code frisieren konnte sie von der Anfrage-uRL zu extrahieren, aber das ist für mich nicht richtig sein, und ich würde vielmehr tut es richtig.

Prost

MH

War es hilfreich?

Lösung

fand ich diese auf einem anderen Forum und wird es so hier posten, falls jemand es nützlich findet. Beachten Sie, dass, wie Sie dies tun, ändert sich je nachdem, ob Sie mit MVC 1 oder 2

die Klasse, die Sie Bedürfnisse erstellen implementieren

public void OnAuthorization(AuthorizationContext filterContext)

und dann können Sie

string controllerName = filterContext.RouteData.Values["controller"].ToString();

und die gleiche, unter Substitution von „action“ für „Controller“ (stellen Sie sicher, dass Sie zuerst in diesen Werten für NULL-Werte überprüfen). In MVC 2 dies filterContext.ActionDescriptor.ActionName und .ActionDescriptor.ControllerDescriptor.ControllerName geändert werden kann, und Sie werden nicht für NULL-Werte überprüfen müssen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top