2009-04-23 12 views
18

que quieren hacer el defecto papeles para mi clase de controlador a "Los administradores, editores de contenido"las funciones de ASP.NET MVC autorización

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

He hecho esto por adornar el controlador con el atributo anterior. Sin embargo, hay una acción que quiero que esté disponible para todos (es decir, "Ver"). ¿Cómo puedo restablecer las funciones para que todos (incluidos los usuarios no autorizados) tengan acceso a esta acción?

Nota: Sé que podría adornar cada acción de otra acción con el atributo de autorización anterior, pero no quiero tener que hacerlo todo el tiempo. Quiero que todas las acciones de los controladores sean inaceptables de manera predeterminada, de modo que si alguien agrega una acción, debe tomar una decisión para ponerla a disposición del público en general.

+0

posible duplicado de [ASP MVC autorizar todas las acciones excepto unos pocos] (http://stackoverflow.com/questions/780436/asp-mvc-authorize-all-actions-except-a-few) – Matt

+1

Entonces, ¿quieres algo como [http://stackoverflow.com/questions/780436](http://stackoverflow.com/questions/780436) ? – dave

+0

Sí, parece correcto ... desearía que esto estuviera incorporado a los controladores estándar pero no un gran esfuerzo para codificar. Gracias por vincularme. –

Respuesta

0

La única solución que puedo pensar hasta ahora es crear y registrar otro controlador para que tenga uno para el acceso anónimo y otro para el acceso autorizado, pero eso no es tan elegante como me hubiera gustado.

4

Puede colocar el atributo Autorizar en los métodos de acción. No solo a nivel de clase.

Por lo tanto, mueva el atributo de la clase de controlador a solo los métodos de acción que desea proteger.

+1

Hola Kieron, gracias por la respuesta. Como la parte de la Nota de mi pregunta dice que soy consciente de esto, es posible, pero quiero que el valor predeterminado para las acciones del controlador sea inaccesible sin tener que adornarlas con el atributo de autorizar. –

+0

Creo que esta es la mejor respuesta. –

Cuestiones relacionadas