2009-04-23 14 views
18

Ich möchte die Rollen Standard für meine Controller-Klasse machen „Administratoren, Content-Editoren“ASP.NET MVC Rollen Authorization

[Authorize(Roles = "Administrators, Content Editor")] 

Ich habe dies getan, indem der Controller mit dem obigen Attribut schmücken. Es gibt jedoch eine Aktion, die ich allen zugänglich machen möchte (nämlich "View"). Wie kann ich die Rollen zurücksetzen, sodass jeder (einschließlich vollständig nicht autorisierter Benutzer) Zugriff auf diese Aktion hat.

Hinweis: Ich weiß, dass ich jede einzelne Aktion mit dem oben genannten Autorisierungsattribut verschönern könnte, aber ich möchte das nicht immer tun müssen. Ich möchte, dass alle Controller-Aktionen standardmäßig nicht verfügbar sind, sodass, wenn jemand eine Aktion hinzufügt, sie eine überlegte Entscheidung treffen müssen, sie der Öffentlichkeit zugänglich zu machen.

+0

möglich Duplikat [ASP MVC autorisieren alle Aktionen außer ein paar] (http://stackoverflow.com/questions/780436/asp-mvc-authorize-all-actions-außer-ein paar) – Matt

+1

So wollen Sie etwas wie [http://stackoverflow.com/questions/780436](http://stackoverflow.com/questions/780436) ? – dave

+0

Yup - sieht ungefähr richtig aus ... wünschte, dies wäre in die Standard-Controller eingebaut, aber kein großer Aufwand für das Codieren. Danke, dass du mich verlinkt hast. –

Antwort

0

Die einzige Lösung, die ich bis jetzt denken kann, ist, einen anderen Controller zu erstellen und zu registrieren, so dass ich einen für anonymen Zugriff und einen für autorisierten Zugriff habe, aber das ist nicht ganz so elegant, wie ich es gewünscht hätte.

4

Sie können das Attribut Autorisieren auf die Aktionsmethoden setzen. Nicht nur auf Klassenebene.

Verschieben Sie also das Attribut aus der Controller-Klasse in die Aktionsmethoden, die Sie sichern möchten.

+1

Hallo Kieron, danke für die Antwort. Wie der Note-Teil meiner Frage erwähnt, weiß ich, dass dies möglich ist, aber ich möchte, dass die Standardeinstellungen für die Controller-Aktionen nicht zugänglich sind, ohne sie mit dem authorize-Attribut zu versehen. –

+0

Ich denke, das ist die beste Antwort. –

Verwandte Themen