ASP - Validar Usuario

 
Vista:

Validar Usuario

Publicado por Martin (18 intervenciones) el 01/04/2004 04:52:15
Alguien me puede dar una idea de como hacer :
Tengo mi extranet,hago mi login normal valido mi usuario en la BD . Pero si alguien quiere entrar con mi login y password al mismo tiempo q yo estoy navegando en la extranet , se supone q no me debe dejar
Nose si lo mejor seria trabajar con variables de session o activando un flag en la tabla de usuario , cualquier idea gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Validar Usuario

Publicado por Victor Collado (77 intervenciones) el 01/04/2004 06:28:01
Hola
Si quieres que un mismo Usuario solo entre, una vez al sitio, podrias tener control al nive de Application, si una session se abre para el usuario-1, cuando alguien vuelva a abrir una session con el mismo nombre de usuario lo sacas de la session controlando si tu varible de application ya tiene ese usuario dentro.
Se me ocurre que utilices un objeto Dictionary a nivel de Application, te pongo un ejemplo:
Global.asa
<OBJECT ID="objusuarios" RUNAT="SERVER" SCOPE="APPLICATION"
PROGID="Scripting.Dictionary">
</OBJECT>
<SCRIPT LANGUAGE="VBScript" RUNAT="SERVER">
Sub Application_onStart()
' Creamos el objecto de application a partir del dictionary
Set Application("Usuarios") = objusuarios
End Sub
Sub Session_OnEnd()
' Cuando la session se acaba limpiamos el usuario del objecto Dictionary de App...
Set objData = Application("Usuarios")
If objData.Exists(Session("Usuario)) Then
objData.Remove Session("Usuario)
End if
End Sub
</SCRIPT>

Pagina Login, aqui crecibes los datos del form y revisas primero el ojecto Dictionary de Application :
Set objData = Application("Usuarios")
usuario = Request.Form("TextBoxusuario")
If objData.Exist(usuario) = False Then
' aqui pones el codigo para que entre
else
'aqui para decirle que ya ese usuario esta dentro
End if

Saludos

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Util pero innecesario

Publicado por Ayudante (255 intervenciones) el 01/04/2004 06:38:25
Ojo con la proposión, puedes tener efectivamente un buen control con un objeto a nivel de aplicación, pero también eso conlleva a que alguien baje el servidor y lo vuelva a subir, solo con eso ya un segundo o tercero o cualquiera que sea la sesión que se cree entrarán.

Lo que mejor he visto, es usar las sesiones en BD, o sea, una tabla simple, donde manejes quién entró, a qué hora y de ser necesario, a qué hora vence la sesión sin tener actividad, pero ojo, cada vez que haya una consulta o cualquier cosa, se debe actualizar la BD para que la hora de vencimiento se corra.

Lo de la hora es un agregado, porque bien puedes manejar tus sesiones con solo un campo, pero el problema es este: Qué pasa si entras una vez y el navegador se cae, o se queda pegado y es necesario reiniciar incluso la PC?

Esta sesión quedará activa "for ever", piensa bien, la seguridad no es tan difícil de programar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Util pero innecesario

Publicado por Victor Collado (77 intervenciones) el 01/04/2004 18:16:29
Hola

Lo de la base de datos es como dices, mas efectivo, y ademas puedes tener un Job en SQL que revise el tiempo desde que un usuario ha entrado y el tiempo actual si es mayor que X - tiempo se borra la entrada en la tabla y asi si el navegador se cayo como dices, el job borrara la entrada en la tabla, un job se puee programar para que suceda cada cierto tiempo.
Ahora la opcion de Application la he visto funcionar por tiempo y siempre si tomas las medidas necesarias, como por ejemplo limpiar el objecto dictionary cada vez que se pierda la session del usuario y otras medidas como adicionar cookies al cliente con el usuario y la sessionID etc, no tendra problemas lo que no entiendo cuando dices que: "también eso con lleva a que alguien baje el servidor y lo vuelva a subir" --- es posible que de tanto tiempo trabajando en otro idioma a lo mejor no conozco muchos terminos en Español, me lo puedes explicar, por que si dices que si alguien para y arranca el servidor eso no seria problema ya que casa vez que la aplicacion se dispara se inicia el objecto dictionary por primera sin usuarios. pero espero mejor tu explicacion de que quisistes decir.

Saludos

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mi explicación

Publicado por Ayudante (255 intervenciones) el 03/04/2004 22:30:45
Mira, el asunto es que eso va a ser una intranet, lo que conlleva a seguridades para que nadie tenga acceso físico y lógico (programas) al servidor que pueda afectar al servicio del IIS.

Si tú bajas el servicios IIS o sea matas el servicio, todas las variables de sesión, y aplicación son borradas de la memoria, y cuando el servicio vuelve a iniciar las variables se crearán con la primer solicitud que se haga al servidor, incluso, hay ocaciones que el servicio no basta con ser bajado (matar el servicio) sino que hay que reiniciar el servidor.

Esos terminos no son extraños, incluso se usan en ingles (shut DOWN), up, down, kill, son comunes en windows y unix, de hecho, muchos son tan antiguos como el mismo unix.

Cualquier otra cosa, con ASP, PHP y algunas de JSP talves pueda ayudarte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar Usuario

Publicado por Martin (18 intervenciones) el 02/04/2004 20:46:45
Me sale este mensaje de error :
La aplicación llamó a una interfaz que estaba en el búfer para un diferente subproceso.

Mi codigo en el login es este:
Set objData = Application("Usuarios")
usuario = "Martin"
pass="mve"
If objData.Exist(usuario) = False Then
Response.Write("Primera vez q entras")
objData.Add pass,usuario
set Application("Usuario")= objData
else
strArray=objData.Keys
for i=0 to objData.count-1
if strArray(i)="mve" then
cont=cont+1
end if
next
Response.Write("Estas dentro " & " veces ")
End if

Pienso q debe ser el objData ya q no esta declarado con objeto dictionary, el codigo de globla.asa es el mismo q esta de ejemplo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar Usuario

Publicado por Victor Collado (77 intervenciones) el 02/04/2004 23:29:26
Hola

Antes de verificar que pasa primero agregala una s ala palabra Exist que es el method Exists. otra cosa, no necesitas hacer un loop dentro del dictionary para saber si el key esta repetido ya que esto nunca podra ocurrir , la misma Key nunca la podras agregar dos ves a el objecto dictionary por que te dara un error es por eso que compruebo con el method Exists del Dictionary si no tiene la key dentro para agregarla por que agregarla sin verificar dara un error al introducir una key existente.

Verifica que al agregar la s trabaje el ejemplo si no dimelo para copiarlo a mi maquina y revisarlo.

Saludos

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar