Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/05/2010, 03:10
Canal_on
 
Fecha de Ingreso: julio-2007
Mensajes: 16
Antigüedad: 16 años, 10 meses
Puntos: 2
Generar Public Function con un trozo de código

Hola a tod@s; a ver si podeis ayudarme...

Buscando por los foros encontré un código asp para hacer login validando contra LDAP. La página desde la que se ejecuta el código funciona perfectamente...

Para poderlo reutilizar en otras aplicaciones, quiero meter dicho codigo en una funcion de ASP, y llamarla cuando la necesite desde otras páginas. Tengo el típicofichero 'funciones.asp' con varias de ellas...

Pero algo debo hacer mal al convertir el código mencionado en una 'public function', porque cuando la llamo desde mi página, la función da siempre valor '0' (es decir, valor de incorrecto).

el código originario -que ya digo que funciona cuando va sólo en una página propia- es el siguiente: (quito la parte html, y dejo solo los que va entre <% %>)

Código asp:
Ver original
  1. <%
  2.  
  3. strUsername = "MiUser"
  4. strpassword = "Mipassw"
  5. domainname = "MIDominio"
  6.  
  7. on error resume next
  8.  
  9. Set objDomain = GetObject ("GC://rootDSE")
  10. objADsPath = objDomain.Get("defaultNamingContext")
  11. Set objDomain = Nothing
  12. Set objConnection = Server.CreateObject("ADODB.Connection")
  13. objConnection.provider ="ADsDSOObject"
  14. objConnection.Properties("User ID") = domainname+"\" + strUsername
  15. objConnection.Properties("Password") = strpassword
  16. objConnection.open "Active Directory Provider"
  17. Set objCommand = CreateObject("ADODB.Command")
  18. Set objCommand.ActiveConnection = objConnection
  19. objCommand.CommandText ="select cn FROM 'GC://"+objADsPath+"' where sAMAccountname='"+strUsername+"'"
  20. Set objRS = objCommand.Execute
  21.  
  22. If Err.Number <> 0 Then
  23. ldap = 0
  24. Response.write("Usuario o contraseña incorrecto")
  25. Else
  26. ldap = 1
  27. Response.write("Usuario o contraseña logado correctamente")
  28. End If
  29. RESPONSE.WRITE("<P>")& LDAP &"<p>"
  30.  
  31. %>


Pues bien, con este código, reescibo la siguiente función... que no funciona (y no funciona aunque le ponga los valores 'a pedal' y no sacados del form...):

Código asp:
Ver original
  1. PUBLIC FUNCTION ValidaLdap(strUsername,strpassword,domainname)
  2.  
  3. on error resume next
  4.  
  5. Set objDomain = GetObject ("GC://rootDSE")
  6. objADsPath = objDomain.Get("defaultNamingContext")
  7. Set objDomain = Nothing
  8. Set objConnection = Server.CreateObject("ADODB.Connection")
  9. objConnection.provider ="ADsDSOObject"
  10. objConnection.Properties("User ID") = domainname+"\" + strUsername
  11. objConnection.Properties("Password") = strpassword
  12. objConnection.open "Active Directory Provider"
  13. Set objCommand = CreateObject("ADODB.Command")
  14. Set objCommand.ActiveConnection = objConnection
  15. objCommand.CommandText ="select cn FROM 'GC://"+objADsPath+"' where sAMAccountname='"+strUsername+"'"
  16. Set objRS = objCommand.Execute
  17.  
  18. If Err.Number <> 0 Then
  19. ldap = "0"
  20. 'Response.write("Usuario o contraseña incorrecto")
  21. Else
  22. ldap = "1"
  23. 'Response.write("Usuario o contraseña logado correctamente")
  24. End If
  25. 'RESPONSE.WRITE("<P>")& LDAP &"<p>"
  26.  
  27. ValidaLdap=ldap
  28.  
  29. end function


Al incio de mi página donde uso la función va el include, ya para llamarla hago un

response.write "pasa: "&ValidaLdap(MiUser,MiPassw,MiDominio)

en donde, todoas las variables están perfectamente válidas...

y no se que hago mal...

Gracias por contestar!!!