supports page net mvc custom asp applications and asp.net-mvc asp.net-mvc-3 forms-authentication

asp.net mvc - page - MVC Forms LoginUrl es incorrecto



identity asp mvc (7)

¿Se origina a partir de la redirección contenida en su resultado de la acción LogOn?

Busque en su proyecto la cadena LogIn y puede encontrar dónde se especifica.

Tengo una aplicación ASP.NET MVC 3 con autenticación de formularios. Por alguna razón que no puedo ver, la URL de redireccionamiento de inicio de sesión es /Account/Login?ReturnUrl=%2fSecure%2fAction lugar de /Account/LogOn?ReturnUrl=%2fSecure%2fAction . La diferencia es sutil, es usar / Account / Login en lugar de / Account / LogOn .

Mi sección de formularios web.config es correcta. ¿Otra cosa podría afectar la URL de inicio de sesión?

<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="720" /> </authentication>


Acabo de toparme con este problema (como 6 años después y esta página ya no ocupa un lugar destacado en las búsquedas ...) mi solución era similar a santiagoIT.

Debido a que agregué autenticación a un proyecto que no la tenía previamente, prácticamente "hice trampa" al copiar el código de autenticación requerido de una plantilla de proyecto predeterminada que incluía:

app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } });

La url de autenticación de formularios usaba web.config para todas mis páginas aspx pero se destruyó cuando agregué el atributo Autorizar.

Cambiar el LoginPath solucionó mi problema.


En lugar de esto:

<appSettings> <add key="loginUrl" value="~/Authentication/LogOn" /> </appSettings>

Puedes usar esto:

<appSettings> <add key="PreserveLoginUrl" value="true" /> </appSettings>

Funcionó para mí


Este es un problema conocido. Tuve el mismo problema con mi atributo de autorizar personalizado. Encontré la solución en algún lugar de la red, no recuerdo dónde. Solo agregue esto a appSettings en su web.config

<add key="loginUrl" value="~/Account/LogOn" />

Nota: Esto funciona con MVC 3, no lo intenté con versiones anteriores.

EDITAR: Lo encontré mencionado en las notas de la versión , pero parece que han cambiado el nombre de la configuración y se olvidó de actualizar las notas de la versión de RTM.


La respuesta de frennky me ayudó a llegar a esto. Necesitaba todo esto en mi web.config:

<appSettings> <add key="loginUrl" value="~/Authentication/LogOn" /> </appSettings> <system.web> <authentication mode="Forms"> <forms loginUrl="~/Authentication/LogOn" timeout="2880"></forms> </authentication> <authorization> <deny users="?"/> </authorization> </system.web>


Me encontré con un problema similar hace algún tiempo. Después de unos meses descubrí la raíz del problema: había agregado una ''dependencia desplegable'' en ''Páginas web ASP.NET con sintaxis Razor''. Esto agrega una referencia a: WebMatrix.Data.dll Este ensamblado tiene una clase con un constructor estático que hace lo siguiente:

static FormsAuthenticationSettings() { FormsAuthenticationSettings.LoginUrlKey = "loginUrl"; FormsAuthenticationSettings.DefaultLoginUrl = "~/Account/Login"; }

Compruebe si está haciendo referencia a este dll.


Para solucionar este problema, que aún existe en MVC 3, debe eliminar la WebMatrix. *. Dll de las carpetas _bin_deployableAssemblies y bin, respectivamente.