IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Class de connexion LDAP


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut Class de connexion LDAP
    Bonjour à tous ,

    Je souhaite créer une classe de connexion LDAP, je procède comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
        Public Class ClassLdap
     
            'Variables de connexion à la LDAP
            Private CheminLdap As String = "LDAP://DC=corpdir,DC=net"
            Private NomConnectLdap As String = "UserLdap"
            Private PassConnectLdap As String = "Password:-)"
     
     
            Public Sub ConnectionLdap()
                Try
                    'Connexion à l'annuaire LDAP
                    Dim monEntryLDAP As New DirectoryEntry(CheminLdap, _
                                                      NomConnectLdap, _
                                                     NomConnectLdap)
                Catch ex As Exception
                    MsgBox("Erreur lors de la connexion Ldap " & ex.Message & " " & ex.ToString)
                End Try
     
            End Sub
     
            Public Sub CloseConnectionLDAP()
                'On ferme la connexion LDAP
                Try
                    monEntryLDAP.Close()
                Catch ex As Exception
                    MsgBox("Erreur lors de la fermeture de la connexion Ldap " & ex.Message & " " & ex.ToString)
                End Try
     
            End Sub
     
        End Class
    Et l'utilise comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     Private Sub ListerUser()
            'Appel de la fonction de connexion de la classe ClassLdap
            Dim maConnectionLdap As New ClassLdap()
            maConnectionLdap.ConnectionLdap()
     
            Dim maRecherche As DirectorySearcher = New DirectorySearcher(monEntryLDAP)
            'On filtre uniquement sur les utilisateurs
            maRecherche.Filter = "(objectclass=user)"
            'Utilisateurs à lister
            Dim lesUsers As DirectoryEntry
     
            'Affichage des utilisateurs listé
            Try
     
                'Boucle permettant a mon curseur d'avancer tant qu'il y a des resultats et d'implémenter ma ListView
                For Each result As SearchResult In maRecherche.FindAll
                    'On récupère l'entrée trouvée lors de la recherche
                    lesUsers = result.GetDirectoryEntry
     
                    'Remplissage du comboBox si et sulement si les valeurs login,nom sont renseignées
                    If lesUsers.Properties("sAMAccountName").Value <> "" _
                    And lesUsers.Properties("sn").Value <> "" Then
                        'Déclaration du tableau qui recoit les données avant de les inclure dans la comboBox
                        Dim monTableauTemp() As String = {(lesUsers.Properties("sAMAccountName").Value)}    'Login                      
                        'On ajoute les données dans la combo box
                        CB_LdapUser.Items.Add(monTableauTemp(0))
                    End If
                Next
            Catch ex As Exception
                'Affichage du message d'exception
                MsgBox(ex.ToString)
            End Try
     
        End Sub
    Il me génère l'erreur suivante :

    monEntryLDAP n'est pas déclaré

    Comment palier à cette erreur je suis un peu perdu... Dur dur la programmation objet.

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Re ,

    Je vais reformuler ma demande :
    Voici ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
        Private Sub ListerUser()
     
            Dim CheminLdap As String = "LDAP://DC=corpdir,DC=net"
            Dim NomConnectLdap As String = "LdapUser"
            Dim PassConnectLdap As String = "Password:-)"
     
            Try
     
                'Connexion à l'annuaire LDAP
                Dim monEntryLDAP As New DirectoryEntry(CheminLdap, _
                                                   NomConnectLdap, _
                                                   PassConnectLdap)
                Dim maRecherche As DirectorySearcher = New DirectorySearcher(monEntryLDAP)
                'On filtre uniquement sur les utilisateurs
                maRecherche.Filter = "(objectclass=user)"
                'Utilisateurs à lister
                Dim lesUsers As DirectoryEntry
     
                'Affichage des utilisateurs listé
                Try
     
                    'Affichage des utilisateurs listé
     
                    'Boucle permettant a mon curseur d'avancer tant qu'il y a des resultats et d'implémenter ma ListView
                    For Each result As SearchResult In maRecherche.FindAll
                        'On récupère l'entrée trouvée lors de la recherche
                        lesUsers = result.GetDirectoryEntry
     
                        'Remplissage du comboBox si et sulement si les valeurs login,nom sont renseignées
                        If lesUsers.Properties("sAMAccountName").Value <> "" _
                        And lesUsers.Properties("sn").Value <> "" Then
                            'Déclaration du tableau qui recoit les données avant de les inclure dans la comboBox
                            Dim monTableauTemp() As String = {(lesUsers.Properties("sAMAccountName").Value)}    'Login                      
                            'On ajoute les données dans la combo box
                            CB_LdapUser.Items.Add(monTableauTemp(0))
                        End If
                    Next
                    'Fermeture de la connexion
                    monEntryLDAP.Close()
     
                Catch ex As Exception
                    MsgBox("Erreur lors de la connexion Ldap " & ex.Message & " " & ex.ToString)
                End Try
     
            Catch ex As Exception
                MsgBox("Erreur lors de la connexion Ldap " & ex.Message & " " & ex.ToString)
            End Try
     
     
     
        End Sub
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Private Sub ButtonFindUserLdap_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonFindUserLdap.Click
            'Variables 
     
            'Valeur du filtre login
            Dim UserSearch As String = CB_LdapUser.Text
     
            'Manipulation de la chaine Manager (issu de la LDAP)
            Dim returnManager As String
            Dim Manager As String
            Dim myInteger As Integer
     
            'variables de manipulation de chaine dcxObjectOwner
            Dim Chaine As String
            Dim Tableau() As String
            Dim finalManager As String
     
     
            Dim CheminLdap As String = "LDAP://DC=corpdir,DC=net"
            Dim NomConnectLdap As String = "LdapUser"
            Dim PassConnectLdap As String = "Password:-)"
     
            Try
     
                'Connexion à l'annuaire LDAP
                Dim monEntryLDAP As New DirectoryEntry(CheminLdap, _
                                                   NomConnectLdap, _
                                                   PassConnectLdap)
     
                Try
     
                    ' Nouvel objet pour instancier la recherche
                    Dim maRecherche As DirectorySearcher = New DirectorySearcher(monEntryLDAP)
                    ' On modifie le filtre pour ne chercher que l'user dont le nom de login est celui selectionner
                    maRecherche.Filter = "(SAMAccountName=" & UserSearch & ")"
                    ' Recherche de l'user user
                    Dim result As SearchResult = maRecherche.FindOne()
                    ' On récupère l'objet trouvé lors de la recherche
                    Dim FindUser As DirectoryEntry = result.GetDirectoryEntry()
                    Me.TB_Service.Text = (FindUser.Properties("dcxCostCenter").Value)
                    Me.TB_LogEMEA.Text = (FindUser.Properties("sAMAccountName").Value)          'login
                    Me.TB_NomUtilisateur.Text = (FindUser.Properties("sn").Value)               'Nom
                    Me.TB_PrenomUtilisateur.Text = (FindUser.Properties("givenName").Value)     'Prenom
     
     
                    'Mise en forme du manager si il est implémenté
                    If FindUser.Properties("manager").Value <> "" Then
                        Manager = FindUser.Properties("manager").Value
                        'Index du caractère (
                        myInteger = Manager.IndexOf("(")
                        'Soustraction de la chaine de 0 à l'index (
                        returnManager = Manager.Substring(0, myInteger)
                        'Remplacement des chaines
                        returnManager = returnManager.Replace("\,", "")
                        finalManager = returnManager.Replace("CN=", "")
                        Me.TB_Manager.Text = finalManager
     
                        'Si le manager n'est pas implémenté ce qui est valable pour les externes
                        'On regarde le champs dcxObjectOwner qui contient sAMAccountName
                        'Et on prend cette valeur
                    ElseIf FindUser.Properties("dcxObjectOwner").Value <> "" Then
                        'Traitement de la chaine de char dcxObjectOwner
                        Chaine = FindUser.Properties("dcxObjectOwner").Value
                        Tableau = Chaine.Split(" ")
                        returnManager = Tableau(3).Replace("sAMAccountName=", "")
                        finalManager = returnManager.Replace("""", "")
                        Me.TB_Manager.Text = finalManager
                    End If
     
     
     
                    'Fermeture de la connexion
                    monEntryLDAP.Close()
     
                Catch ex As Exception
                    MsgBox("Erreur lors de la connexion Ldap " & ex.Message & " " & ex.ToString)
                End Try
     
            Catch ex As Exception
                MsgBox("Erreur lors de la connexion Ldap " & ex.Message & " " & ex.ToString)
            End Try
     
     
        End Sub

    C'est relativement lourd donc je souhaiterai faire une fonction de connexion afin d'alleger ce code et faire appel a cette fonction quand j'en ai besoin .

  3. #3
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour l'erreur vient du faite que vous avez déclaré la variable monEntryLDAP en LOCALE à la méthode connexionLdap() dans votre premier message. Erreur corrigée dans le second message.

    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
      Public Class ClassLdap
     
            'Variables de connexion à la LDAP
            Private CheminLdap As String = "LDAP://DC=corpdir,DC=net"
            Private NomConnectLdap As String = "UserLdap"
            Private PassConnectLdap As String = "Password:-)"
            Private monEntryLDAP As DirectoryEntry
     
            Public Sub ConnectionLdap()
                Try
                    'Connexion à l'annuaire LDAP
                    monEntryLDAP = New DirectoryEntry(CheminLdap, _
                                                      NomConnectLdap, _
                                                     NomConnectLdap)
                Catch ex As Exception
                    MsgBox("Erreur lors de la connexion Ldap " & ex.Message & " " & ex.ToString)
                End Try
     
            End Sub
     
            Public Sub CloseConnectionLDAP()
                'On ferme la connexion LDAP
                Try
                    monEntryLDAP.Close()
                Catch ex As Exception
                    MsgBox("Erreur lors de la fermeture de la connexion Ldap " & ex.Message & " " & ex.ToString)
                End Try
     
            End Sub
     
        End Class

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Bonjour ,

    Merci de vous pencher son mon problème ,

    J'ai déclaré ma variable (monEntryLDAP ) en globale et il me dit toujours la même erreur (A savoir : monEntryLDAP n'est pas déclaré)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     'Appel de la fonction de connexion de la classe ClassLdap
                Dim maConnectionLdap As New ClassLdap()
                maConnectionLdap.ConnectionLdap()
                Dim maRecherche As DirectorySearcher = New DirectorySearcher(monEntryLDAP)
    Hors celui ci est déclaré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class ClassLdap
    
        'Variables de connexion à la LDAP
        Private CheminLdap As String = "..."
        Private NomConnectLdap As String = "..."
        Private PassConnectLdap As String = "..."
        Private monEntryLDAP As DirectoryEntry
    Question à dix balles : Les variables survivent bien au travers des classes ?

    Erreur corrigée dans le second message.
    Je ne comprend pas trop votre réponse car mon deuxième poste reprend le code mais sans approche objet, donc j'instancie deux fois la connexion deux fois la déconnexion ...

    Moi je souhaite afin d'alléger mon code de faire une class Ldap contenant la connexion et déconnexion et en faire appel.

    Merci

Discussions similaires

  1. Petit souci JSP et class de connexion a BdD
    Par LeXo dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 07/06/2006, 00h57
  2. connexion ldap dans le livre jsp professionnel
    Par mjihanne dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/05/2006, 16h46
  3. Connexion LDAP (active directory)
    Par Mateache dans le forum ASP
    Réponses: 2
    Dernier message: 09/05/2006, 13h33
  4. connexion Ldap et recupération d'information
    Par lechatmagik dans le forum ASP
    Réponses: 13
    Dernier message: 31/10/2005, 10h44
  5. [LDAP] connexion LDAP
    Par abertaud dans le forum API standards et tierces
    Réponses: 15
    Dernier message: 20/07/2005, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo