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

Autentificación que invalida session

Estas en el tema de Autentificación que invalida session en el foro de ASP Clásico en Foros del Web. Alguien sabe por qué cuando se utiliza una session de autentificación en páginas privadas automáticamente dejan de funcionar las sesiones que ésta tenga? me explico, ...
  #1 (permalink)  
Antiguo 25/11/2003, 09:41
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
Autentificación que invalida session

Alguien sabe por qué cuando se utiliza una session de autentificación en páginas privadas automáticamente dejan de funcionar las sesiones que ésta tenga? me explico, en mi página de login puse esto:ç


If MM_rsUser.EOF then
'No existe ese usuario con esa contraseña
'Así que le negamos el acceso
' PONEMOS ID A CERO --> NINGUN USUARIO TIENE ESTE IDENTIFICADOR
Session("aut")=False
Response.Redirect("Default.htm")
else

'Le mandamos a la pagina de bienvenida
' SALVAMOS EL ID DE ESTE USUARIO EN LA VARIABLE DE SESION
Session("aut")=True
Response.Redirect("Menu.asp")
end if

y luego en cada página privada:

<%
'Página privada
if Session("aut")=False then
'le negamos el paso
end if
%>
<%
Response.Buffer=True
if not Session("aut") then
'Es lo mismo que poner igual a False
Response.Status="401 Acceso Prohibido"
Response.End
end if
%>

El tema es que yo uso sesiones para imprimir nombres en los formularios de quien se logueó, y si aplico esta autentificación la sesion del nombre se pierde. Espero haberme hecho entender... por qué se invalidan sesiones?

Gracias
__________________
¡Que Tengas Suertecita!
  #2 (permalink)  
Antiguo 25/11/2003, 15:44
ACHAVARRIA
Invitado
 
Mensajes: n/a
Puntos:
Hola Domi :

El problema que persivo es que estas ejecutando un redirect y tengo entendido que el redirect no envias los valores al siguiente asp que tu invocas !!!

puedes utilizar lo siguientes:

Puedes definir un formulario en tu pagina donde validas la contraseña (puedes utiliza todos lo formularios que necesites):

<FORM NAME="menu" METHOD="post" action="">
bandera = false

WHILE not MM_rsUser.EOF
IF MM_rsUser("CLAVE") = "AQUI PONES TU VARIABLE DE CLAVE" THEN
bandera = true
END IF
MM_rsUser.movenext
wend

IF BANDERA = FALSE THEN
Session("aut")=False
response.write("CLAVE INVALIDA......")
response.end()
ELSE
%>
<input type="submit" name="boton1" onClick="document.menu.action='pagina1.asp'">

<input type="submit" name="boton2" onClick="document.menu.action='pagina2.asp'">
<%END IF%>
</FORM>
  #3 (permalink)  
Antiguo 26/11/2003, 08:45
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
Hola,,,, me es confuso lo de bandera... si me explicas cuál es su función sería bárbaro. Muchas Gracias Ingeniero
__________________
¡Que Tengas Suertecita!
  #4 (permalink)  
Antiguo 26/11/2003, 09:00
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
AAA me olvidaba.... tengo una duda adicional, lo que estoy haciendo es una evaluación que se hace dos veces por mes, tenemos el problema de que la misma persona presenta la evaluación varias veces, quiero que solo pueda presentarla una vez, asumo que es con un if, pero exactamente no sé como sería gracias..
__________________
¡Que Tengas Suertecita!
  #5 (permalink)  
Antiguo 26/11/2003, 11:20
ACHAVARRIA
Invitado
 
Mensajes: n/a
Puntos:
OK Domi: la variable BANDERA por ejemplo Yo utilizo mucho este tipo de autentificación de acceso a mis paginas web de varias Intranet que están actualmente trabajando, esta cariable simplemente la defines como DIM BANDERA y la función es que cuando se realiza el barrido de la tabla para encontrar al usuario si el usuario existe la Bandera = true por lo que significa que el usuario existe sino existiera por default ya definiste la variable BANDERA = FALSE, esa es la función principal, ahora bien, si el usuario existe y BANDERA = TRUE puedes utilizar una variable del Session por ejemplo Session("Usuario") para almacenar el usuario que ingresó.

Espero te sirva y sorry por durar mucho en responderte!!!
  #6 (permalink)  
Antiguo 26/11/2003, 11:29
ACHAVARRIA
Invitado
 
Mensajes: n/a
Puntos:
OK con respecto a la evaluación que estas realizando comentame acerca de ella. !!! y con mucho gusto te puedo ayudar. !!!
  #7 (permalink)  
Antiguo 26/11/2003, 12:45
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
a listo.gracias!!!


Con respecto a la evaluación, tiene varios select donde escojen las diferentes respuestas, es una evaluación con randomize, bueno el tema es que no quiero que puedan presentar la evaluación más de una vez, la base de datos es SQL, es una sola tabla, mi pregunta es si es en el query SQL donde debe ir la verificación (si ya la presentó o no) o si lo puedo hacer al principio si encuentra el nombre de la persona envíelo al inicio, si no muéstrele la evaluación. La sintaxis para que haga el if con conexión a la base de datos no la manejo bien, por eso estoy estancada aunque ya buscando como hacerlo, en dos horas tengo que resolverlo

Gracias eres un sol.
__________________
¡Que Tengas Suertecita!
  #8 (permalink)  
Antiguo 26/11/2003, 12:56
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Domi, por qué quitaste la foto de tu firma?

(Me agradaban mucho tus lentes de sol )
  #9 (permalink)  
Antiguo 26/11/2003, 13:14
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
Cita:
Mensaje Original por dazuaga
Domi, por qué quitaste la foto de tu firma?

(Me agradaban mucho tus lentes de sol )



me parecía que cuando posteaba varias veces quedaba muy saturado el mensaje visualmente jeje...
__________________
¡Que Tengas Suertecita!
  #10 (permalink)  
Antiguo 26/11/2003, 14:01
ACHAVARRIA
Invitado
 
Mensajes: n/a
Puntos:
SI DOMI QUE LASTIMA LA FOTOGRAFIA.

CON RESPECTO A LA CONSULTA NUEVAMENTE!!!, PUEDES HACERLO DE LAS DOS FORMAS, CUALQUIERA TE FUNCIONARIA, PODRIAS HACER EN ASP UNA CONSULTA DE QUE YA EXISTE LA EVALUACION DE ESE USUARIO NO LA EJECUTE SINO QUE LO ENVIES (AL USUARIO) A OTRA PAGINA QUE DIGA MUCHAS GRACIAS PERO EJECUTASTE LA EVALUACION.


Última edición por ACHAVARRIA; 26/11/2003 a las 14:03
  #11 (permalink)  
Antiguo 26/11/2003, 14:01
ACHAVARRIA
Invitado
 
Mensajes: n/a
Puntos:
Estableces la conexion a la base de datos de esta forma:

Set conexion = Server.CreateObject ("ADODB.Connection")

conexion.open "driver={SQL Server};server=SERVIDOR;database=BASE DE DATOS;uid=USUARIO;pwd=CONTRASEÑA;"

SQL = "SELECT * FROM Usuarios"
Set TABLA = conexion.execute(SQL)
IF NOT TABLA.BOF THEN
Do while not TABLA.EOF
If (TABLA("CAMPO_EN_SQL") = VARIABLE then
VARIABLE_EN_ASP = TABLA("CAMPO_EN_SQL")
End If
TABLA.MoveNext
Loop
END IF

Última edición por ACHAVARRIA; 26/11/2003 a las 14:03
  #12 (permalink)  
Antiguo 26/11/2003, 15:24
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
Cita:
Mensaje Original por ACHAVARRIA
PODRIAS HACER EN ASP UNA CONSULTA DE QUE YA EXISTE LA EVALUACION DE ESE USUARIO NO LA EJECUTE SINO QUE LO ENVIES (AL USUARIO) A OTRA PAGINA QUE DIGA MUCHAS GRACIAS PERO EJECUTASTE LA EVALUACION.

[/B]
Cómo sería la sintaxis :-p
__________________
¡Que Tengas Suertecita!
  #13 (permalink)  
Antiguo 26/11/2003, 15:27
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
La conexión a la base de datos la sé hacer, el problema que tengo es saber cómo decirle que si encuentra al usuario ya en esa base (es por que presentó ya la evaluación) entonces envíele una página donde dice "usted ya presentó la evaluación"

Yo trabajo con Dreamweaver, vos sabés, si lo has utilizado, que el dreamweaver usa más líneas de código para todo, entonces quedo loca de donde coloco la verificación de si ya presentó la evaluación o no........aaaa
__________________
¡Que Tengas Suertecita!
  #14 (permalink)  
Antiguo 26/11/2003, 15:36
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
Para saber si ya a enviado una evaluación ...

strSQL = "SELECT USUARIO FROM EVALUACOIONES WHERE USUARIO=" & variable_que_tenga_el_nombre_o_id_del_usuario
Set MR = Server.CreateObject("ADODB.RECORDSET")
Set MR = MyConn.Execute(strSQL)
If MR.EOF OR MR.BOF THEN
response.write ("tu no has enviado nada")
Else
response.write ("no puedes añadir cosas 2 veces")
End If
mr.close
set mr = nothing
__________________
Tu portal de manga y anime.
  #15 (permalink)  
Antiguo 26/11/2003, 18:00
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
guaaaaa no he podidoooooooo

lo que me da problemas es esto:
<%
If session("Agentes") = "" then
response.redirect "../../Login.asp"
else
'muestras los datos
strSQL = "SELECT * FROM evagentesoct WHERE agente = "&session "Agentes"" or agente1= "&session "Agentes"" or agente2 ="&session "Agentes"" or agente3 = "&session "Agentes"
Set MR = Server.CreateObject("ADODB.RECORDSET")
Set MyConn = Server.CreateObject ("ADODB.Connection")
MyConn.Open "dsn=Call Center;uid=intranet;pwd=carlosja;"
Set MR = MyConn.Execute(strSQL)
If MR.EOF OR MR.BOF THEN
response.write <a href="mensajenov.asp">Puedes Presentar la Evaluación</a>
Else
response.write ("No puedes presentar la evaluación dos veces")
End If
End if
%>

dice que en la linea del query SQL expected end :S
__________________
¡Que Tengas Suertecita!
  #16 (permalink)  
Antiguo 26/11/2003, 18:10
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
dado que la evaluación es aleatoria tengo 4 campos de la misma session en la base, si arroja la evaluación uno entonces guarda el agente, si arroja la evaluación dos guarda el agente2, si arroja la evaluación 3 guarda el agente3, por eso tengo que ver todos los campos agente, agente1, agente2, agente3....
__________________
¡Que Tengas Suertecita!
  #17 (permalink)  
Antiguo 27/11/2003, 10:30
Avatar de domi  
Fecha de Ingreso: septiembre-2003
Ubicación: Bogotá D.C
Mensajes: 61
Antigüedad: 21 años, 8 meses
Puntos: 0
Jee ya lo hice!!! yupiiiiiiiiiiiiiiiiiiiiiiiiiiii

era así:

strSQL = "SELECT * FROM evactuadatos WHERE agente like '%" & UCase(Session("Agentes")) & "%'"
Set MR = Server.CreateObject("ADODB.RECORDSET")
Set MyConn = Server.CreateObject ("ADODB.Connection")
MyConn.Open "dsn=Call Center;uid=intranet;pwd=carlosja;"
Set MR = MyConn.Execute(strSQL)
If MR.EOF OR MR.BOF THEN

Aciasss a todos!
__________________
¡Que Tengas Suertecita!
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 05:09.