La seguridad
Yo no se si les ha pasado y como lo solucione facilmente no me he preocupado de buscar porque pasa, pero cuando tienes rutas creadas en el espacio System.Web.Routing.RoutTable resulta que por mucho que protejas una carpeta para que solo los usuario autenticados tengan acceso, la página sigue estando disponible. Así que tuve una idea, la puse en funcionamiento, y como funcionó, aqui os la traigo.
Evento OnPreInit
Con el evento OnPreInit de la página, que se utiliza, por ejemplo, para cambiar la master page en tiempo de ejecución, podemos comprobar si el usuario está autenticado o no. Si no lo está, sencillamente lo redireccionamos a la página de login. Así de simple. Este es el código para el que le interese.
protected override void OnPreInit(EventArgs e)
{
if (Page.User.Identity.IsAuthenticated)
{
// cambiar la pagina maestra a utilizar
this.MasterPageFile = [ruta de la pagina maestra]
Page.Title = "Aprende a programar";
}
else Response.Redirect("~/login");
}
Dos al precio de uno
Como veis también os he puesto la línea de código que cambia la página maestra a utilizar. Si por ejemplo teneis páginas maestras anidadas y quereis cambiar la página maestra principal, es decir, la primera de todas (en este ejemplo solo tendremos 2 maestras) tienes que agregar this.Master.MasterPageFile para indicar que quereis cambiar la master de la master. Si tuvieras mas de dos master, pues dependiendo cual quieras cambiar vas agregando Master.Master.[...].MasterPageFile hasta que lleges a la master que quieres cambiar.
Conclusiones
Nada más... Happy Codding
#ASP #trucos