Ich verwende einen benutzerdefinierten Mitgliedschaftsanbieter. Alles funktioniert super. Allerdings habe ich in meiner web.config-Datei "Benutzer verweigern" aktiviert, so dass die gesamte Website gesperrt ist.ASP.NET MVC 2 Autorisierung Problem
Das funktioniert super. Der Benutzer wird zur Anmeldeseite weitergeleitet.
Jetzt habe ich ein paar Controller/Aktionen, die ich anonymen Zugriff zulassen möchte. Über Seite, Passwort zurücksetzen, etc.
Der einzige Weg, wie ich herausfinden kann, wie dies zu tun ist, die gesamte Website zu entsperren, legen Sie [Authorize] -Attribute auf jedem Controller und entfernen Sie sie für den Controller/Aktionen, die ich anonym möchte.
Dies scheint rückwärts zu mir. Ich bevorzuge es, alles standardmäßig zu sperren und das, was anonym ist, freizuschalten.
Gibt es einen Weg um dies?
Danke!
Vielen Dank für diesen Vorschlag. Dies würde bedeuten, dass die Site (wie in der web.config) vollständig geöffnet wäre, aber alle Controller standardmäßig gesperrt wären, so lange sie vom ProtectedController erben. – cbmeeks
@cbmeeks - korrekt. Außerdem denke ich, dass die Verwendung des AuthorizeAttribute (oder etwas, das davon abgeleitet ist), d. H. Der MVC-Sicherheit, definitiv dem Versuch vorzuziehen ist, WebForms-basierte Sicherheit und MVC-Sicherheit zu mischen. – tvanfosson
** ACHTUNG ** Die AuthorizeAttribute-Klasse muss nach ihrer Erstellung unveränderbar sein. Sie können HttpContext.Items verwenden, um den ActionDescriptor zu speichern, aber Sie müssen ihn * absolut NICHT als Instanzfeld innerhalb der Klasse speichern. Der Grund dafür ist, dass eine einzelne Instanz von AuthorizeAttribute verwendet werden kann, um mehrere gleichzeitige Anforderungen zu verarbeiten, und durch die Einführung eines Instanzfeldes haben Sie jetzt eine Race-Bedingung in Ihrem Sicherheitscode. – Levi