Foros del Web » Programando para Internet » ASP Clásico »

ayuda con sistema de usuarios

Estas en el tema de ayuda con sistema de usuarios en el foro de ASP Clásico en Foros del Web. he sacado de las faq un par de codigos Encryptar y Desencryptar Password http://www.forosdelweb.com/showpost....8&postcount=90 sistema de usuarios http://www.forosdelweb.com/showpost....5&postcount=92 los cual los uni para que funcionen ...
  #1 (permalink)  
Antiguo 11/10/2005, 07:37
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
ayuda con sistema de usuarios

he sacado de las faq un par de codigos
Encryptar y Desencryptar Password
http://www.forosdelweb.com/showpost....8&postcount=90

sistema de usuarios
http://www.forosdelweb.com/showpost....5&postcount=92

los cual los uni para que funcionen juntos y tambien he realizado el sistema para agregar nuevos usuarios. hasta ahi todo bien.
Bueno el primer problema que tengo es que para generar el password encriptado funciona muy bien pero al querer logearme sale que no es correcto el loguin

el codigo que puse fue


Sub CheckLogin
Dim Conn, cStr, sql, RS, username, userpwd

username = Request.Form("username")
userpwd = Request.Form("userpwd")
userpwd= DecodeStr(userpwd)

Set Conn = Server.CreateObject("ADODB.Connection")
cStr = "DRIVER={Microsoft Access Driver (*.mdb)};"
cStr = cStr & "DBQ=" & Server.MapPath("xxxx.mdb") ";"
Conn.Open(cStr)
sql = "select username from UserTable where username = '" & LCase(username) & "'"
sql = sql & " and userpwd = '" & LCase(userpwd) & "'"
Set RS = Conn.Execute(sql)
If RS.BOF And RS.EOF Then
Error_Msg = "Login Failed. Try Again."
ShowLogin
Else
Session("UserLoggedIn") = "true"
Response.Redirect "protectedpage2.asp"
End If
End Sub

por un lado eso y por el otro le agregado un campo mas en la base de datos que es la categoria de usuario, como ser: Admin, editor, ayudante, etc.
como hago aqui para identificar cual es el tipo de usuario y dependiendo de cual es, me cargue solo aquellas opciones a las que tiene acceso.
ejemplo
opciones de menu, opciones de editar, etc.

espero que puedan entender lo que estoy necesitando.
gracias por la ayuda que puedan ofrecerme
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
  #2 (permalink)  
Antiguo 11/10/2005, 13:42
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 11 meses
Puntos: 2
Si guardas en la bd las claves codificadas pues para comparar luego en loguin con una clave ingresada debes codificar la misma, no decodificar algo que no esta codificado como lo estas haciendo. Al igual que no uses LCase() en el string SQL.

Para identificar usurios te propongo lo siguiente: (lo arme en poco tiempo, espero lo entiendas y te sea útil)

En la aplicación (en un include común a todas las páginas) definimos los tipos de usuarios en una matriz:
Código:
dim usrt(1,4) '5 tipos de usuarios en este caso
usrt(0,0) = 1
usrt(1,0) = "Administrador"

usrt(0,1) = 2
usrt(1,1) = "Amigo"

usrt(0,2) = 4
usrt(1,2) = "Familiar"

usrt(0,3) = 8
usrt(1,3) = "Compañero de Trabajo"

usrt(0,4) = 16
usrt(1,4) = "Compañero de Estudio"
El valor numérico es el nivel del tipo de usuario, el mismo debe ser siempre el valor del tipo anterior multiplicado por dos.
El otro valor es la descripción del tipo de usuario.

Ahora definiariamos la tablita de usuarios

usuarios
usuario (texto 20) clave principal
clave (texto 20)
nombre (texto 80)
nivel (numerico entero)

Utilizamos el campo nivel para identificar a qué tipos de usuarios pertece el usuario.

La forma de hacerlo es sumando los niveles de los tipos de usuarios en la que el usario es partícipe.

Por ejemplo: si el usuario es un Amigo, el valor de su nivel seria 2; si el usuario es un Amigo y un Compañero de Trabajo, su nivel seria 2 + 8 = 10.

El loguin:
Código:
dim usuario, clave, usr_nivel, nombre
usuario = request("usuario")
clave   = request("clave")

sql = "select nombre, nivel from usuarios where usuario = '" & usuario & "' and clave = '" & clave & "'"
'ya tendria que estar el objeto recordset y connecton instanciados.
set ors = ocon.execute(sql)
'hagamos de cuenta que siempre existe el usuario, vos despues lo adaptas
usr_nivel = ors("nivel")
nombre    = ors("nombre")
ors.close
'destruimos los objetos
Ahora que ya tenemos todos los datos, hay que definir en cada página de nuestro sitio qué tipos de usuario aceptaremos.
Código:
dim sec_nivel
sec_nivel = 8 + 16
'dejaremos pasar a los compañeros tanto de trabajo como de estudio

if usr_nivel and sec_nivel then
	'sos bienvenido
else
	'fuera bicho!
end if

'ahora para mostrar a que tipo de usuario pertence:
response.write("<strong>" & nombre & "</strong>: ")
for i = 0 to ubound(usrt,2)
	if usrt(0,i) and usr_nivel then response.write(usrt(1,i) & ", ")
next
'habria que mejorar esto para que no aparezca la coma al final, pero bue, la idea está!
Esto es a modo de ejemplo, faltan muchas cosas como validar usr, clave, encriptar, etc.

Como anticipé lo armé medio rapidito, asi que cualquier cosa me volves a preguntar, adioooooos!
__________________
Sergio
  #3 (permalink)  
Antiguo 11/10/2005, 14:33
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
gracias por tu aporte, con respecto al tema de la validacion, releyendo el codigo me di cuenta de ese error y lo modifique haciendo que esto ya funcione bien y con respecto a los niveles lo entendi bastante bien, voy a ponerlo en practica con algunos cambios, claro esta, pero me ayudo muchisimo.
otra cosita mas hoy haciendo una prueba colgue la variable con el nombre de usuario en un include que aparece en todas mis paginas para que me muestre el valor de esta en un sitio de mi pagina donde quiero saber quien es el que se logueo, pero no aparece nada, puede ser que haya que pasarlo de alguna otra forma como ser con un session?
gracias por tu ayuda

PD: otra cosita mas como hago para que se desloguee un usuario?
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla

Última edición por virla; 11/10/2005 a las 14:57
  #4 (permalink)  
Antiguo 11/10/2005, 18:49
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 11 meses
Puntos: 2
Cuando haces el login y es válido:
Código:
session("usuario") = rs("usuario")
luego desde todas las paginas recuperas el valor de la session:
Código:
usurio = session("usuario")
para cerrar session:
Código:
session("usuario") = ""
para preguntar si se inicio session o no:
Código:
if len(session("usuario")) > 0 then
'esta logueado
else
'no esta logueado
end if
Hasta luego!
__________________
Sergio
  #5 (permalink)  
Antiguo 13/10/2005, 06:27
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
Bueno hereje, he puesto todo como me lo explicas tu y funciona, pero tengo un problema.
el usurio = session("usuario") lo he puesto dentro de un include que va a todas las paginas.
tengo un menu que tambien es un include.
cuando me logeo, todo bien me muestra en la cabecera el usuario que esta registrado.
pero al precionar unas 5 veces mas o menos dentro de los diferentes items del menu, se borra el valor del session, porque sucede eso, cual puede ser el problema?
espero que se entienda bien
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
  #6 (permalink)  
Antiguo 14/10/2005, 06:20
Avatar de virla  
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 9 meses
Puntos: 1
alguien sabe porque puede ser esto?
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:43.