8

he escrito una costumbre AuthorizeAttribute que tiene la siguiente condición en la aplicación asp.net MVC3:predeterminado URL de inicio de sesión en HttpUnauthorizedResult en asp.net mvc

public override void OnAuthorization(AuthorizationContext filterContext) 
{  
    //auth failed, redirect to Sign In 
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
    { 
     filterContext.Result = new HttpUnauthorizedResult(); 
    } 
} 

Y en mi web.config, tengo:

<authentication mode="Forms"> 
    <forms loginUrl="~/User/SignIn" timeout="2880" /> 
</authentication> 

Al fallar la autenticación, redirige a la página "/ Cuenta/Login" de forma predeterminada.

¿Cómo cambio esta URL predeterminada de redireccionamiento y la redirijo a "/ Usuario/Iniciar sesión"?

La captura de pantalla muestra la visión clara de lo que estoy tratando de decir .. HttpUnauthorizedresult image

Aunque he configurado '/ usuario/SignIn', redirecciona a '/ Cuenta/Login'

+0

está usando MVC3? –

+0

Sí. Estoy usando MVC3. – Prasad

+3

Tengo la solución después de una lucha. Recientemente, he agregado la referencia WebMatrix.WebData, que parece ser el verdadero culpable de este problema. Esto se puede manejar agregando la clave a su archivo de configuración: Prasad

Respuesta

9

no estoy seguro de si puedo añadir esto como una respuesta. Pero esto puede ayudar a otros que estaban teniendo este problema relacionado.

Tengo la solución después de una lucha. Recientemente, he agregado la referencia WebMatrix.WebData, que parece ser el verdadero culpable de este problema. Esto puede ser manejado mediante la adición de la clave de su fichero de configuración:

<add key="loginUrl" value="~/User/SignIn" /> 
+6

La clave debe agregarse a la sección appSettings en su web.config. –

+0

Creo que normalmente agregamos las teclas arriba a la sección appSettings :) – Prasad

+0

@Prasad Ya pasé un par de horas en esto ... ¡Gracias por enviarnos aquí y ahorrar el resto del día! – spender

2

Usted debe modificando la raíz para loginUrl.

he creado AuthorizationAttribute ... está redirigiendo correctamente p.

<authentication mode="Forms"> 
    <forms loginUrl="~/Authenticate/SignIn" timeout="2880"/> 
</authentication> 

y mi atributo es:

public class AuthorizationAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     base.OnAuthorization(filterContext); 

     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 
} 

y aplicar atributos a cualquier método de su controlador cuando sea necesario ...

[AuthorizationAttribute()] 
public ActionResult Index() 
{ 
    return View(); 
} 
+0

Lo he cambiado en la configuración raíz. Pero estaba redirigiendo a la página/Acccount/Login y arroja la página 404, ya que no tengo dicho controlador. – Prasad

+0

Eso es extraño ya que he realizado POC en este momento para verificar y está funcionando como se esperaba, redirigiendo a la acción especificada en web.conf (root uno) ... –

+0

¿Puede publicar el código de atributo de autor del cliente para verificar si me falta? ¿cualquier cosa? – Prasad

Cuestiones relacionadas