2011-08-18 8 views
9

¿Hay una forma de hacer que un atributo [Authorize] sea ignorado en una acción en una clase de controlador que tenga un atributo Authorize?Aplicar AuthorizeAttribute a una clase de controlador y a la acción simultáneamente

 [Authorize] 
     public class MyController : Controller 
     { 
      [Authorize(Users="?")]//I tried to do that and with "*", but unsuccessfuly, 
      public ActionResult PublicMethod() 
      { 
      //some code 
      } 

      public ActionResult PrivateMethod() 
      { 
      //some code 
      } 
     } 

Sólo el PrivateMethod() debe tener requiere autenticación, pero se ha requerido también.

PD: No me gustaría hacer mi filtro de autorización personalizado.

[ 's

+1

¿Estás tratando de ignorar el Autorizar que se encuentra en myController clase para el acción PublicMethod o PrivateMethod? – itsmatt

+0

Es ignorar para la acción PublicMethod. Escribí algo mal, lo siento, ¡está arreglado ahora! –

Respuesta

4

Por defecto es imposible] - si ajusta [Autorizar] para el controlador entonces sólo autenticados usuario puede acceder a la acción.

o

Usted puede tratar de decisiones personalizados: stackoverflow.

3

Una solución es en este artículo: Securing your ASP.NET MVC 3 Application

El artículo habla de un enfoque de lista blanca donde se decora acciones con un atributo personalizadoAllowAnonymous. Requiere que extienda AuthorizeAttribute y el método OnAuthorization para omitir las comprobaciones de autorización de AllowAnonymous -acciones. (El enfoque se le atribuye a Levi, un experto en seguridad en el equipo MVC.)

16

se puede utilizar [AllowAnonymous]

[Authorize] 
public class MyController : Controller 
{ 
    [AllowAnonymous] 
    public ActionResult PublicMethod() 
    { 
      //some code 
    } 

    public ActionResult PrivateMethod() 
    { 
      //some code 
    } 
    } 
0
public class MyController : Controller 
    { 
     [Authorize] //it will only work for the following action 
     public ActionResult PublicMethod() 
     { 
     //some code 
     } 

     public ActionResult PrivateMethod() //[Authorize] will not work for this action 
     { 
     //some code 
     } 
    } 
+0

Intenta agregar algunas palabras para explicar tu respuesta. Las respuestas de solo código son normalmente menos útiles. – Matt

Cuestiones relacionadas