4

J'ai rencontré une situation dans laquelle je devais être capable de rechercher un utilisateur par son nom de répertoire actif. J'ai essayé de rechercher l'utilisateur dans les propriétés SPSite.Users, SPSite.AllUsers et SPSite.SiteUsers, mais l'utilisateur n'est pas garanti d'être dans l'une de ces listes. Pour les utilisateurs qui obtiennent l'autorisation du site via un groupe de répertoires actif ayant reçu l'autorisation d'accéder au site, il n'existe aucune liste pour l'utilisateur dans les différentes listes d'utilisateurs, mais uniquement un enregistrement pour le groupe de répertoires actifs. Existe-t-il un moyen de trouver un utilisateur par programme dans SharePoint sans devoir directement interroger le répertoire actif via LDAP? Je voudrais idéalement trouver un mécanisme qui fonctionne pour l'authentification basée sur les formulaires et l'authentification AD, mais j'ai besoin de trouver un mécanisme qui fonctionne avec l'authentification AD.Recherche par programme un utilisateur dans SharePoint

Répondre

3

Essayez SPWeb.EnsureUser:

vérifie si le nom de connexion spécifié appartient à un utilisateur valide du site Web, et si le nom de connexion n'existe pas déjà, ajoute au site Web

Cette méthode fonctionne avec AD et FBA. Si vous utilisez les deux, vous devez préfixer le nom d'utilisateur d'un fournisseur non-défaut avec quelque chose comme ceci:

SPUser webUser = web.EnsureUser("SecondaryProvider:" + userName); 
+1

Cela semble en arrière qu'il n'y a pas une liste globale, vous pouvez interroger, mais après l'exécution EnsureUser , l'utilisateur apparaît alors dans la liste SPSite.SiteUsers. Vous pouvez ensuite récupérer l'objet SPUser dans la liste qui correspond exactement à ce dont j'ai besoin. – ICodeForCoffee

+0

@ICodeForCoffee Mais le EnsureUser retourne l'objet SPUser. – Alex

Questions connexes