2011-07-21 21 views
15

Soy nuevo en ASP.NET y estoy tratando de encontrar una forma de redirigir fácilmente a un usuario no autenticado desde cualquier página del sitio a la página de inicio de sesión. Preferiría no poner el siguiente código en cada función HTTP GET si hay otra opción.¿Cómo redirigir fácilmente si no está autenticado en MVC 3?

if (!Request.IsAuthenticated) 
{ 
    return RedirectToAction("LogOn", "Account"); 
} 

Respuesta

30

Marque su controlador con [Authorize] atributo http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

Consulte a su web.config, por defecto que debe tener la autenticación de formularios encendido authentication mode="Forms"http://msdn.microsoft.com/en-us/library/eeyk640h.aspx

también mirar esta pregunta ASP.NET MVC Authorization

En caso si usted quiere tener un comportamiento Autorizar encargo mira aquí Customizing authorization in ASP.NET MVC

12

Se puede poner el atributo [Authorize] sobre cada acción que necesita ser autenticado.

Además, asegúrese de que esta sección se define en su Web.Config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 
+1

Exactamente, y sólo para aclarar - esta sección de configuración se debe colocar dentro de "system.web". – tltjr

3

Acabo de intentar esto:

<!-- using custom auth with MVC redirect --> 
<authentication mode="None"> 
    <forms loginUrl="~/Home/Index"/> 
</authentication> 

y que todavía funciona, aunque yo estoy usando autenticación personalizado. Sin embargo, no estoy seguro acerca del tiempo de espera: [Autorizar] aún usará el predeterminado para la autenticación de formularios o no gestionará los tiempos de espera en absoluto (comportamiento preferido para la autenticación personalizada).

0

Utilicé el siguiente fragmento de código y encontré que es muy elegante y no es necesario escribir ningún enunciado de redirección. MVC se encarga de la redirección basado en los formularios de ingreso de configuración de página y al exitoso inicio de sesión/registro, el usuario es enviado de vuelta a la página inicial solicitado

if (!User.Identity.IsAuthenticated) 
{ 
    //return new HttpUnauthorizedResult(); //This or the below statement should redirect the user to forms login page 
    return new HttpStatusCodeResult(System.Net.HttpStatusCode.Unauthorized); 
} 
Cuestiones relacionadas