2010-09-27 5 views
0

J'essaie de rechercher dans un serveur LDAP tous les utilisateurs qui ont des profils. Jusqu'à présent, je suis en mesure d'obtenir tous les utilisateurs avec un profil, mais je suis incapable de faire la même chose avec des rôles multiples. Ainsi, le code suivant fonctionneTableau de recherche DirContext avec plusieurs paramètres

[...] 
filterExpr = "(&(objectclass=person)(memberOf={0}))"; 
String rol = "myRol"; 
Object parameters[] ={rol}; 
context.search(distinguishedName, filterExpr, parameters, controls); 

mais le code ci-dessous ne

filterExpr = "(&(objectclass=person)(memberOf={0}))"; 
String rol = "myRol"; 
String roles[] = {rol}; 
Object parameters[] ={roles}; 
context.search(distinguishedName, filterExpr, parameters, controls); 

Il ne fonctionne pas s'il y a plus d'un rol dans le tableau. Qu'est-ce que je fais mal?

+0

Désolé, je suis nouveau dans ce forum, et je ne savais pas que vous pouvez évaluer les réponses. Ça ira. Merci pour l'info! –

Répondre

0

Le tableau d'objets peut uniquement contenir une liste de chaînes ou un tableau d'octets. Restant autre sera converti en chaîne. Dans votre deuxième exemple, le premier objet est un tableau de chaînes. Très probablement, la référence du tableau sera convertie en chaîne et le filtre en sera fait.

Jetez un oeil à l'api, il est dit,

« Les objets qui ne sont ni une chaîne, ni un octet [] sont convertis en leur forme de chaîne via Object.toString() et les règles de chaîne sont applicables. "

Votre requête ldap devrait être,

filterExpr = "(&(objectclass=person)(|(memberOf={0})(memberOf={1})(memberOf={2})))"; 
String rol1 = "myRol1"; 
String rol2 = "myRol2"; 
String rol3 = "myRol3"; 
Object parameters[] ={rol1, rol2, rol3); 
context.search(distinguishedName, filterExpr, parameters, controls); 
+0

Je sautais pour éviter cela, mais il semble qu'il n'y ait pas d'autre moyen. Merci de votre aide! –

Questions connexes