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

Página con Contraseña

Estas en el tema de Página con Contraseña en el foro de ASP Clásico en Foros del Web. Hola a todos: Pretendo hacer una página de acceso con login y password que compruebe en una base de datos si los datos son correctos ...
  #1 (permalink)  
Antiguo 07/06/2004, 05:30
 
Fecha de Ingreso: junio-2003
Mensajes: 318
Antigüedad: 21 años
Puntos: 0
Página con Contraseña

Hola a todos:
Pretendo hacer una página de acceso con login y password que compruebe en una base de datos si los datos son correctos y puedas entrar.
Tengo varias dudas:
¿Cómo se consigue que si pasa un tiempo la página caduque y tengas que volver a poner login y password?
¿Cómo consigo que no exista la opción de entrar a la página de dentro sabiendo simplemente su nombre?. Es decir, ¿cómo obligo a tener que pasar por la página de login y password?
Si podéis darme algún que otro consejo más me serviría de mucho.
Gracias como siempre.
  #2 (permalink)  
Antiguo 07/06/2004, 07:00
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 6 meses
Puntos: 1
Lo mejor es que controles los tiempos de conexión con variables de sesión, que la puedes relacionar directamente con el LOGIN. Las variables de sesión se declaran en su durablilidad en el global.ass, por defecto se van a la mierda a los 20 minutos.

Este es el código que por defecto te genera el Dreamweaver para este efecto y funciona perfectamente, espero te sirva:


<%
' *** Este es para restingir el acceso si no esta validado
MM_authorizedUsers="nivel_de_acceso"
MM_authFailedURL="pagina_de_redireccion_si_no_se_h a_validado.html"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
If (false Or CStr(Session("MM_UserAuthorization"))="") Or _
(InStr(1,MM_authorizedUsers,Session("MM_UserAuthor ization"))>=1) Then
MM_grantAccess = true
End If
End If
If Not MM_grantAccess Then
MM_qsChar = "?"
If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
MM_referrer = Request.ServerVariables("URL")
if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
Response.Redirect(MM_authFailedURL)
End If
%>


Y este el de validar al usuario, recoge los datos de un formulario:


<%
' *** Validar usuario.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("login"))
If MM_valUsername <> "" Then
MM_fldUserAuthorization="oper_nivel_acceso"
MM_redirectLoginSuccess="index.asp"
MM_redirectLoginFailed="form_validacion.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_bd_STRING 'Aqui debe ir el nombre de tu conexión a la base de datos
MM_rsUser.Source = "SELECT login, clave"
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
MM_rsUser.Source = MM_rsUser.Source & " FROM operadores WHERE login='" & Replace(MM_valUsername,"'","''") &"' AND clave='" & Replace(Request.Form("clave"),"'","''") & "'"
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then
' username and password match - this is a valid user
Session("MM_Username") = MM_valUsername
session ("login") = CStr( MM_rsUser.Fields.Item("login").Value)

If (MM_fldUserAuthorization <> "") Then
Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization ).Value)

Else
Session("MM_UserAuthorization") = ""

End If
if CStr(Request.QueryString("accessdenied")) <> "" And false Then
MM_redirectLoginSuccess = Request.QueryString("accessdenied")
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginSuccess)
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%>
  #3 (permalink)  
Antiguo 07/06/2004, 10:52
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años, 1 mes
Puntos: 1
Por dios, esto es la biblia...

Tan solo con poner este sencillo código en la parte superior de cada una de las páginas que quieras que no se pueda acceder sin antes estar identificado:

Código PHP:
if Session("identificado") <> 1 Then
response
.redirect "login.asp"
End if 
Aún más fácil sería que escribieras este simple código en un archivo aparte, y lo fueras incluyendo a todas las páginas que quieras, así, si en un futuro tienes que modificar algo (más usuarios, niveles de usuarios, etc) solo tendrías que modificar este archivo.

Por otro lado, y para que esto funcione, en la página de LOGIN (que en mi ejemplo utilizo "login.asp"), si el usuario se ha identificado correctamente, tendrías que crear una variable de sesión con el valor de 1 (que es el que luego verificas, aunque puedes perfectamente poner el valor que quieras, siempre y cuando luego lo cambies en el código de arriba)

Es decir... si el usuario existe en la BBDD y se identifica correctamente, antes de enviarlo a la página que quieras, creas esta variable de sesión:

Código PHP:
Session("identificado") = 
Ah, por cierto, y además, si el usuario quiere "deconectarse" de tu site, nada más fácil que eliminar todas las variables de sesión:

Código PHP:
Session.Contents.RemoveAll() 
Un Saludo

LeCLUB

Última edición por LeCLUB; 07/06/2004 a las 10:53
  #4 (permalink)  
Antiguo 07/06/2004, 10:53
Avatar de jorel  
Fecha de Ingreso: abril-2003
Ubicación: Monterrey, N.L.
Mensajes: 253
Antigüedad: 21 años, 2 meses
Puntos: 0
un buen ejemplo para lo que necesitas y explicado aqui:


http://www.desarrolloweb.com/manuales/42/
__________________

:adios:

Jorge Santana
  #5 (permalink)  
Antiguo 08/06/2004, 04:31
 
Fecha de Ingreso: junio-2003
Mensajes: 318
Antigüedad: 21 años
Puntos: 0
Gracias a todos me habéis ayudado mucho, simplemente una cosa más.
¿No existe un código sencillo para que cuando pase un tiempo, o se vaya a otra web caduque la session y tenga que volver a poner login y password?
Gracias como siempre
  #6 (permalink)  
Antiguo 08/06/2004, 04:42
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años, 1 mes
Puntos: 1
Predefinidamente, el tiempo de sessión en IIS es de 20 minutos, eso que quiere decir, que si el usuario no realiza ninguna acción dentro de los 20 minutos siguientes a la última página generada, pierde automáticamente la sessión. Tambien mencionar que si el usuario "cierra" el navegador, tambien se pierde la sessión inmediatamente.
  #7 (permalink)  
Antiguo 08/06/2004, 07:39
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 6 meses
Puntos: 1
rycoy, ya te lo había explicado en mi respuesta anterior, cuando te ponía:

"Las variables de sesión se declaran en su durablilidad en el global.asa, por defecto se van a la mierda a los 20 minutos."

No me refería a que las variables de sesión se fueran a cagar...

¿Te lees las respuestas?
  #8 (permalink)  
Antiguo 08/06/2004, 10:35
 
Fecha de Ingreso: junio-2003
Mensajes: 318
Antigüedad: 21 años
Puntos: 0
Tranquilidad y buenos alimentos hombre.
En primer lugar me pones en vez de global.asa, global.ass la cual cosa me ha despistado un poco aunque suponía tu error.
Y en segundo lugar me colocas un código que genera dices dreamweaver que para mi es un poco chungo, por eso y si me has leido tú a mi, verás que digo "¿No existe un código sencillo..."
En fin, gracias de todos modos y pediría otra vez un poco de tranquilidad para no generar malos rollos, ya que son simplemente posibles malentendidos. Se supone que estamos todos para ayudarnos unos a otros.
  #9 (permalink)  
Antiguo 08/06/2004, 10:49
 
Fecha de Ingreso: marzo-2004
Ubicación: San José, Costa Rica
Mensajes: 234
Antigüedad: 20 años, 2 meses
Puntos: 0
Cita:
Iniciado por reycoy
Gracias a todos me habéis ayudado mucho, simplemente una cosa más.
¿No existe un código sencillo para que cuando pase un tiempo, o se vaya a otra web caduque la session y tenga que volver a poner login y password?
Gracias como siempre
Saludos,

Bueno yo estoy programando un shopping cart y para que lo que tu pides lo resolví poniendo lo siguiente en el head de la página:

<% If Session("Logeado") Then %>
<meta http-equiv="refresh" content="600;URL=salir.asp">
<% End If %>

Entonces estó verífica si el usuario está logeado y si lo está imprime el meta en el head con lo cual esperará 10 minutos y si el usuario no ha cargado otra página o refrescado la misma lo enviará a una página que efectúa el logout.

Talvés no es la forma más óptima (imagino que con JavaScript se haría mejor...), pero a mi me funciona bien.

Saludos,
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 23:10.