solicitud no autorizada no redirige a la página de inicio de sesión con el parámetro de cadena de consulta ReturnURL

StackOverflow https://stackoverflow.com/questions/4478570

Pregunta

Configuración

En mi aplicación MVC3, MembersController está decorado con un atributo [Autorizar].

MembersController tiene una acción llamada MiPágina. Debido al atributo Autorizar en el controlador, MyPage sólo puede ser solicitada por los usuarios autorizados.

Problema

Cuando un usuario intenta no autorizadas a petición / Miembros / MiPágina se les redirige correctamente a la página de inicio de sesión.

Sin embargo, el parámetro ReturnUrl no se pasa a la página de inicio de sesión, por lo que cuando se autentica el usuario, son llevados a la página por defecto (permite llamarlo / Miembros / Inicio) en lugar de / Miembros / MiPágina.

Pregunta

¿Por qué?!

En otra aplicación, desarrollada en MVC2, los parámetros ReturnURL QS está ahí y funciona como se esperaba.

Otros Temas:

El atributo Autorize está siendo ignorada al momento de decorar los dos controladores y acciones.

Resolución:

Las secciones de web.config no se actualiza correctamente entre .NET 3.5 y .NET 4. Ver las respuestas a continuación.

¿Fue útil?

Solución

@Marcind me puso en el camino correcto, la respuesta de @Darin Dimitrov muy instructiva del proceso en cuestión.

Diagnóstico

Parece que el problema estaba relacionado con un web.config que no se actualiza correctamente cuando la fusión se forma una web existentes de aplicaciones .NET 3.5 a un 4.0 .NET aplicación. No puedo recordar cómo fui sobre esto.

De todos modos, comparando el web.config de mi aplicación con un nuevo MVC 3 web.config, yo era capaz de encontrar los bits extra que no debería haber estado allí, que quedaron de 3,5 días.

Resolución:

El problema se resolvió mediante la corrección de los bits en el en el web.config la etiqueta , así como .

Otros problemas causados ??por este:

Otro problema causado por esto fue el hecho de que si he decorado un controlador con el atributo Autorizar, que fue ignorada, por lo que el controlador trató de información del proceso basado en el usuario actual, que, evidentemente, era nula, por lo que toda clase de excepciones eran despedido.

Otros consejos

A mí me funciona. He creado un nuevo proyecto mediante el ASP.NET MVC 3 RC2, plantilla predeterminada, añadió un MembersController, decorado con el atributo [Authorize], ejecutar la aplicación, /members/index solicitado, se redirige a /Account/LogOn?ReturnUrl=%2fmembers%2findex, cerrar sesión, se redirige a /members/index. Tiene que haber algo más mal con su código.

Así es como funciona:

  • Las comprobaciones de atributos [Authorize] si el usuario es autenticado y si es no devuelve 401 código de estado.
  • El FormsAuthenticationModule que es parte de ASP.NET y formularios manijas intercepta autenticación del código de estado 401 y redirige a la página de inicio de sesión añadiendo el parámetro ReturnUrl a la solicitud que apunta a la petición inicial.

El módulo FormsAuthenticationModule no es específico de ASP.NET MVC, esto es algo ASP.NET estándar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top