2011-05-12 21 views
5

¿Existe alguna manera fácil de obtener autenticación de formularios para ignorar el returnURL?¿Puede la autenticación de formularios ignorar returnUrl

De modo que el usuario hace clic en un enlace, el timesout sitio, se redirecciona a la página de inicio de sesión (que añade ReturnUrl a la URL) - No quiero que esto suceda, o para que pueda ser ignorado cuando se inicia sesión de nuevo .

Respuesta

3

Una opción es tener algo de código en código subyacente de su formulario de acceso que hace lo siguiente:

if (!string.IsNullOrEmpty(Request.QueryString["returnUrl"])) 
{ 
    Response.Redirect("path/to/my/login.aspx"); 
} 

En otras palabras, comprobar en su página de inicio de sesión para la presencia del parámetro de cadena de consulta ReturnURL y si es presente, elimínalo redirigiéndote a ti mismo.

+0

¿No es eso un poco ... caro? –

1

No creo que pueda evitar que se pegue en la URL al usar la Autenticación de formularios.

Sin embargo, usted no necesita para llamar al RedirectFromLoginPage (que es lo que supongo que está haciendo en el minuto); lo que puede hacer es simplemente usar SetAuthCookie para mantener el estado de inicio de sesión y Response.Redirect en cualquier lugar que desee después de eso.

3

Puede quitarlo si no quiere mostrarlo. Lo hago porque no quiero que se muestre con las URL amigables para SEO que tengo configuradas.

En el archivo Global.asax poner lo siguiente:

Protected Sub Application_EndRequest(sender As Object, e As System.EventArgs) 

     Dim redirectUrl As String = Me.Response.RedirectLocation 
     If Not Me.Request.RawUrl.Contains("ReturnUrl=") AndAlso Not String.IsNullOrEmpty(redirectUrl) Then 
      Me.Response.RedirectLocation = Regex.Replace(redirectUrl, "\?ReturnUrl=(?'url'[^&]*)", String.Empty) 
     End If 

End Sub 
+0

muy agradable, gracias –

Cuestiones relacionadas