Estoy desarrollando una aplicación en ASP.Net que requiere de un inicio de sesión (por eso no utilice php, porque no sé cómo hacerlo).... Utilizo variables de sesión cómo método de login de la siguiente manera:
Tengo una clase "User" que tiene varios atributos como: "Id", "Username", "Password", "Rol", al momento que un usuario quiere hacer login pues obviamente consulto en la BD si el nombre de usuario y la contraseña son correctas, si son correctas hago algo así:
Código :
Session.Add("User", new User(id, username, rol));
Entonces cada vez que el usuario visita una página con acceso restringido compruebo de la siguiente manera: (igual en algunas ocasiones es necesario que el rol sea 0, porque es el rol de administración)
Código :
If(!(Session["User"] is User)) Response.Redirect("Login.aspx");
En la página se pueden subir archivos por usuario, para ello guardo una referencia de los archivos subidos en la BD y subo los archivos a un directorio llamado "Uploads". Cuando el usuario quiere descargar uno de sus archivos lo que yo quiero que haga el usuario es: "Iniciar Sesión" -> "Consultar mis archivos" -> "Seleccionar un archivo" -> "Descargar", ese sería el funcionamiento normal, pero cuando se visita la página de la forma:
Código :
http://mi_dominio/Uploads/
aparecen todos los archivos, que se han subido, en el explorador y se pueden descargar aún sin inicar sesión, ahí mi pregunta:
¿Cómo puedo proteger ese directorio de tal manera que hasta que no haya un inicio de sesión no se muestre su contenido (utilizando variables de sesión o debo cambiar el método)?
Lo demás sería que tendría que crear un directorio por usuario (lo cual no me molesta porque son pocos usuarios y yo tengo control total sobre las cuentas que se registran) y protegerlos para que no cualquier usuario vea los archivos de todos los demás usuarios....