VS 2008 acceso a archivos solo por usuarios

Soy nueva en visual studio VB 2008. Tengo este problema, estoy haciendo un site donde solamente entren y accedan a archivos los usuarios que se validen(en la página login.aspx). Los nombres de usuario y sus contraseñas están en una tabla de una base de datos sql, he conseguido validar usando este código:
Dim usuario As String
Dim drConsulta As SqlDataReader
usuario = txtUsuario.Text
Dim str_com As String = "SELECT * FROM <tabla> WHERE usuario='" & usuario & "'"
Dim cn As New SqlConnection()
Dim strConnString As String = ConfigurationManager.ConnectionStrings("LocalSqlSe rver").ConnectionString
cn.ConnectionString = strConnString
Dim cmdEncuesta As New SqlCommand(str_com, cn)
cn.Open()
drConsulta = cmdEncuesta.ExecuteReader()
While drConsulta.Read
Session("campo1") = (drConsulta(0))
Session("campo2") = (drConsulta(1))
Session("campo3") = (drConsulta(2))
....
End While
Con. Close()
Sé que es algo desactualizado este método, pero como dije soy novata. Para cada página que se abra he conseguido que no pueda abrirse si es que no ha accedido de la primera.
El problema está en el acceso a archivos, si doy la ruta del archivo sin haberme conectado, el archivo se abre y ese es mi problema.
Quisiera que por favor me ayuden, lo que no quiero es que el archivo se abra si es que el usuario no se ha conectado. Tal vez esta conexión no sea la adecuada.

1 Respuesta

Respuesta
1
Lo que debes hacer es hacer uso de los parámetros de "authorization" del web. Config.
Para empezar y no aturullarte con teoría lo que debes hacer es meter TODAS las páginas y ficheros que quieras proteger dentro de una misma carpeta, por ejemplo "Intranet" y dejar Login.aspx fuera.
Una vez hecho eso modificamos el web. Config para indicar que la carpeta "Intranet" es privada y solo puede ver su contenido los usuario autenticados. Para ello añadimos lo siguiente:
<location path="Intranet">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>
¡Muy Bien! Ahora solo falta cambiar ligeramente el método con el que autenticas. Para ello lo más fácil es que en lugar de usar tus propios controles uses el control "Login" de .NET
Coge tu página "Login.aspx" y arrastra un control de tipo "Login"; verás como te aparecen ya dos cajas de texo para el usuario y password así como otros controles que no vienen al caso en este ejemplo.
Para terminar solo falta programar la validación de usuario. Para ello sobreescribe el evento "Authenticate" del "Login" que has arrastrado y ejecuta tu código de login.
Si el login es correcto has de indicarlo al sistema así:
e.Authenticated = true
Y ya luego redirigir a la página privada.
De este modo el sistema protege toda la carpeta "Intranet" para que nadie pueda verla A MENOS que la variable "e.Authenticated" del evento "Authenticate" esté a "true" o la sesión haya caducado.
Este la solución que te propongo yo pero en el sitio de El Guille verás múltiples opciones similares para proteger directorios de acceso no validados:
http://www.elguille.info/NET/ASPNET/indicar_elementos_publicos_privados.htm
http://www.elguille.info/colabora/puntoNET/lfoixench_AutenticacionUsandoFormularios.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas