Muchas gracias Sergio, ahora otro par de dudas (soy un poco novatillo en seguridad):
1: Lo que he leído me funciona para redirecionar a una página poniendo dicha página como "defaultUrl" en el web.config. Ahora yo quiero poder definir a dónde redireccionar en función de la contraseña. Es decir, cuando creo un nuevo usuario se genera una contraseña por defecto. Cuando este usuario se da de alta en el sistema por primera vez quiero redireccionarle a una página para que la cambie por una propia y que no pueda acceder a otra página privada hasta que no la cambie. Por tanto necesito decir a la aplicación dos cosas: por un lado que ese usuario se redirige a la página especial de cambio de contraseña, y por otro que ese usuario sólo puede entar en esa página privada mientras su contraseña sea la contraseña por defecto.
2: He estado echando un vistazo a esta página para controlar si se ha alcanzado el timeout de la sesión:
http://www.elguille.info/colabora/NET2005/...Session_End.htmY más o menos lo he acoplado en mi código. Lo que pasa es que tengo un pequeño problemilla con la condición de redirección al login de la clase virtual. Si dejo la condición tal cual me redirige al login sin haberse alcanzado el timeout y si la cambio
y, en lugar de igual a null, la digo distinto de null me funciona cuando el timeout no se ha acabado, pero cuando se llega al tiemout se vuelve a ejecutar el procedimiento de cargar página y no me manda a login, si no que me deja en la página que estaba cuando debería mandarme al login porque el timeout se ha acabado.
De todas formas te dejo el código porque yo lo estoy haciendo en VB y a lo mejor al traducirlo he metido la patita.
Este es el código de mi clase virtual (que es una clase de VB dentro de la carpeta App_Code en un aplicación de ASP.NET, lo cual no se si podrá hacer) que comprueba si el timeout se ha acabado:
******************************************************************************************
Public Class Sesion
Inherits System.Web.UI.Page
Public Overridable Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Response.AddHeader("Refresh",((Session.Timeout * 60) + 5).ToString)
If (Not (Session("SesionActiva")) Is Nothing) Then
Response.Redirect("Login.aspx")
End If
End Sub
End Class
******************************************************************************************
Y este es el código de la página donde ejecuto la llamada a la clase virtual para saber si el timeout se ha acabado antes de cargar dicha página:
****************************************************************************************************
Public Overrides Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MyBase.Page_Load(sender, e)
End Sub
****************************************************************************************************
Espero respuestas.
Muchas gracias de antemano.
Gracias otra vez.
Espero tu respuesta.