Hola de nuevo, primero que nada, me di cuenta que de acuerdo a mi costumbre estaba desordenando todo, ya teniamos una serie de archivos en la raiz del folder admin que no tenian por que estar ahi, asi que me permiti crear un nuevo folder llamado
controles, en el cual pondremos todo los controles que vayamos creando para nuestro admin, footer y header incluidos, de tal manera que nuestro directorio admin deberia quedar asi:
Código:
admin
|
|--controles
|
|--footer.asp
|--header.asp
|--autentificar.asp
|
|--index.asp
|--login.asp
En negritas los nuevos folders/archivos
Ahora, como cambiamos la ruta de algunos de los archivos que ya estabamos ocupando, tambien tenemos que cambiar la ruta de las directivas include de estos archivos, de manera tal que los includes en
login.asp, quedan de la siguiente manera:
Código:
<!--#include file = "../conexion.asp"-->
<!--#include file = "../componentes/usuario.asp"-->
<!--#include file = "../componentes/encriptar.asp"-->
<!--#include file = "../admin/controles/header.asp"-->
.
.
.
.
<!--#include file = "../admin/controles/footer.asp"-->
Ahora si...
Siempre que hagamos una zona protegida, tenemos que asegurarnos que aquellos archivos que viven de manera protegida, no puedan ser accesibles mediante URL directamente, para esto con frecuencia nos valemos de un archivo asp que evalúa una sesión previamente creada en nuestra forma de login (session("usuarioID")), si esta sesión no existe o no tiene valor, entonces simplemente refgirigimos a nuestra forma de login, la ventaja de poner esta directiva en un archivo aparte emulando un control, es que lo podemos reutilizar en cualquier lado.
Abrimos nuestro archivo controles/autentificar.asp y escribimos lo siguiente:
Código:
<%
if len(Session("usuarioID")) = 0 then
Response.Redirect("../admin/login.asp")
end if
%>
Básicamente solo estamos diciendo que si no existe la sesion o no tiene valor, lo mande a volar
Ahora comencemos la verdadera diversión, hasta aquí hemos creado nuestras clases y el formulario pero todo esta un poco disperso...vamos a integrarlo
Abrimos nuestro archivo index.asp y escribimos este código:
Código:
<!--#include file = "../admin/controles/auntentificar.asp"-->
<!--#include file = "../conexion.asp"-->
<!--#include file = "../componentes/usuario.asp"-->
<%
Dim ObjUsuario
Set ObjUsuario = new usuario
ObjUsuario.id = Session("usuarioID")
if ObjUsuario.ObtenerDatos() then
%>
<!--#include file = "../admin/controles/header.asp"-->
<div class="usuario_datos">Cuenta: <a href="#"><%=ObjUsuario.uname%></a></div>
<!--#include file = "../admin/controles/footer.asp"-->
<%
Set ObjUsuario = Nothing
else
Set ObjUsuario = Nothing
Session.Contents.Remove("usuarioID")
Response.Redirect("../admin/login.asp")
end if
%>
La idea del código es la siguiente:
1. Incluimos los archivos que necesitaremos para la autentificación de nuestro usuario
2. Si pasa la primera aduana (que la sesion exista y tenga valor), entonces creamos un nuevo objeto llamado ObjUsuario y de acuerdo con el valor de la sesion obtenida en el form de login que debe ser ni mas ni menos que el id del usuario, obtenemos sus datos mediante nuestro método ObtenerDatos() que creamos en sesiones pasadas.
3. Si existe este usuario, entonces comenzamos a devolver el HTML correspondiente y como ya tenemos todas sus propiedades, "pintamos" su username en un link que ya después le daremos uso.
4. Si no se encuentra este usuario, redirigimos a login.asp, pero quitamos la sesion usuarioID pues si tiene valor pero es incorrecto.
Un ajuste más a nuestra forma de login es el siguiente:
Código:
if ObjUsuario.Autentificar() then
'Guardamos en sesion el id del usuario
Session("usuarioID") = ObjUsuario.id
'Response.Write("Ahora si ingresaste")
Response.Redirect("index.asp")
else
Y esto es todo por hoy