2012-02-09 21 views
6

Estoy migrando una aplicación de ASP.NET Web Forms a ASP.NET MVC 3. Una de las piezas centrales y críticas está actualmente bloqueada en su propio directorio. Me he limitado de usuarios no autorizados accedan a este directorio utilizando el siguiente en mi archivo web.config:Autorización personalizada en ASP.NET MVC 3

<location path="home" allowOverride="false"> 
    <system.web> 
    <authorization> 
     <deny users="?"/> 
     <allow users="*"/> 
    </authorization> 
    </system.web> 
</location> 

Mi pregunta es: ¿Cómo implementar este mismo tipo de seguridad en ASP.NET MVC 3? Tengo la corazonada de que se trata de establecer atributos en mis clases de controlador. Sin embargo, parece que AuthorizeAttribute solo acepta una lista de nombres de usuario y no un estado de autenticación (corrígeme si me equivoco). Miré la aplicación de Internet ASP.NET de ejemplo y no vi que se configurara nada especial en ella.

¿Puede alguien indicarme la dirección correcta en esto?

Gracias!

+0

Eche un vistazo a la respuesta aceptada de mi pregunta en: http://stackoverflow.com/q/746998/1796 –

Respuesta

5

Eso es correcto, podrás utilizar el AuthorizeAttribute, así:

[Authorize] 
public ActionResult AuthenticatedUsers() 
{ 
    return View(); 
} 

[Authorize(Roles = "Role1, Role2")] 
public ActionResult SomeRoles() 
{ 
    return View(); 
} 

[Authorize(Users = "User1, User2")] 
public ActionResult SomeUsers() 
{ 
    return View(); 
} 

En cuanto a "estado de autenticación", no estoy seguro de lo que quiere decir. Parece que Roles manejaría ese requisito de autenticación.

+0

El attriute '[Authorize]' debe verificar que en general estén autenticados. Mientras lo leo, eso es lo que OP está buscando. Creo que puede tener la impresión de que se requiere el parámetro Roles. Además, se debe tener en cuenta que estos atributos se pueden aplicar a la propia clase de controlador para manejarlos de la misma manera en lugar de tener que definirlo para cada método. –

0

Aún puede hacer la autorización en el web.config si lo desea. La mayoría de las personas moverá sus permisos de autorización a las Acciones o al controlador completo (o controlador base) utilizando el filtro [Autorizar].

El filtro Autorizar apoya roles o usuarios del mismo que hace el web.config (El uso de * y? Para "autenticado" y "anónimo")

Si los usuarios y roles no lo harán para comprobar un vistazo a este artículo sobre la creación de un atributo autorizar personalizado:

ASP.NET MVC Custom Authorization

0

que va a utilizar el atributo de autorización a decir qué usuarios o roles tendrán permiso para acceder a un controlador (si se pone en un controlador, estos permisos serán configurado para todas las acciones en este controlador) o una acción. Mire: http://build.mt.gov/2011/10/27/aspnet-mvc3-and-the-authorize-attribute.aspx. Reemplazar quién proporcionará sus roles (de un usuario específico) será un RoleProvider, como lo hace con los formularios web de asp.net.