Manejo de SetCacheability

17/08/2004 - 01:07 por JPablo | Informe spam
Hola Grupo continuo con el mismo detalle sin poder resolver, quiero que
cuando finalizo la sessión en mi aplicación asp.net no me deje en cache las
pantallas que visite en la aplicación para que cuando pulse los botones del
explorador 'Atras' o 'Adelante' no me muestre esas pantallas, he buscado en
la ayuda y he buscado en internet algunos ejemplos que implementen esta
funcionalidad y he colocado el siguiente código pero aún no logro tener
exito, como puedo resolverlo ?¿

Tengo una pagina llamada DefaultPc.aspx en la que contiene un control de
usuario. Y en este control llamado uscIdentificador.ascx tengo un boton en
el la que establecemos la autenticación de la aplicación:


Private Sub btnContinuar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnContinuar.Click

If Seguridad.Identidad.ValidaUsuario(Me.txtUsuario.Text,
Me.txtPassword.Text, Me.drlEmpresa.SelectedItem.Value) = False Then
'Me.FortiaForm1.MsgBox("Usuario o contraseña no válidos")
Me.JPForm1.MsgBox("Usuario, contraseña o tipo de usuario
inválidos")
Me.JPForm1.SetFocus(Me.txtUsuario)
Else

Response.Cache.SetCacheability(HttpCacheability.NoCache)
context.Response.Cache.SetNoServerCaching()
context.Response.Cache.SetNoStore()
context.Response.Cache.SetMaxAge(System.TimeSpan.Zero)
Me.Response.Redirect("Default.aspx?form=Inicio")

End If

End Sub

Después una vez que se introduce el usuario y contraseña de acceso lo
redirecciono a otra pagina llamada Default.aspx con el parametro Inicio,
esta pagina contiene un control Placeholder en el que se cargan las
pantallas de la aplicación(controles de usuario ascx) y contiene un button
link llamado 'Salir' al realizar clik en ese boton se encuentra el siguiente
codigo:

Private Sub lnkbtnSalir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles lnkbtnSalir.Click
HttpContext.Current.Session.Clear()
HttpContext.Current.Session.Abandon()
FormsAuthentication.SignOut()
Server.Transfer("DefaultPc.aspx")
End Sub

y todo funciona bien pero si presiono los botones de 'Atras' o 'Adelante' me
muestra las pantallas que accese en la aplicación, obviamente estas
pantallas se quedaron en cache pero quiero deshabilitar esta caracteristica
es lo que no he podido upsss, no se si el código que estableci anteriormente
es el adecuado, lo cierto es que no logro tener exito.
Alguno de ustedes que ha pasado por la misma experiencia y me quiera
compartir como resolverlo ?¿ Es que debo de colocar en alguna sección código
para inhabilitar la cache ?¿

Gracias de antemano un saludo.
 

Leer las respuestas

#1 Joan
17/08/2004 - 16:06 | Informe spam
Hola.

Supongo que lo que no quieres es que si el usuario ya ha
salido de la aplicación no se pueda vuelva a entrar sin
identificar. ¿No es así?

Si es el caso, a mí me pasa algo parecido. Yo lo que uso
es el objeto SESSION de Asp.NET. Este es un objeto que
sirve para almacenar variables globales de sesión y hay un
objeto SESSION para cada conexión con el servidor Web.

Lo que hago es en el momento de la loguín del usuario,
guardar el usuario en el objeto SESSION:

If Seguridad.ValidarUsuario(IdUsuario) then
Session("Usuario")=IdUsuario

Y en cada una de las paginas ASPX, en el Load:

Private Sub Page_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load

If (Session("Usuario") is nothing) orelse Session
("Usuario") = "" Then
'Redireccion a la pagina de Loguín
Exit Sub
End If
.

I por ultimo en el botón salir, limpio todas las variables
de sesión i termino la sesión:

Session.Clear()
Session.Abandon()

Con esto si vuelven atrás, ya no tienen el valor del
usuario en la sesión con lo que en el Load les
redirecciona a la pagina de loguín y si cierran la ventana
y introducen la pagina manualmente pasa lo mismo porque
están en otra sesión diferente. El único problema de este
método es que el cliente ha de permitir cookies.

No sé si es esto lo que buscabas, pero espero que te sirva
de ayuda.

Saludos.

Preguntas similares