Article d’origine publié le samedi 14 janvier 2012

Un ami m’a présenté un problème assez intéressant l’autre jour. Il essayait d’ajouter un nouvel utilisateur par programmation à un site de revendications Windows et rencontrait toutes sortes de difficultés. Sa tentative initiale d’ajout de l’utilisateur avec domaine\nom d’utilisateur et la classe SPRoleAssignment ne fonctionnait pas comme il voulait. Il a alors essayé différentes manières pour fournir à la revendication la valeur codée du nom de l’utilisateur. Il a d’ailleurs réussi partiellement mais au prix d’effets secondaires étranges comme de voir le nom apparaître deux fois. Alors que je n’ai pas eu l’occasion d’examiner personnellement tous les problèmes qu’il a rencontrés, avec leurs variantes, ce qui a marché pour moi dès le premier essai a été d’utiliser la méthode EnsureUser sur SPWeb. Il est beaucoup plus simple de procéder ainsi que de bricoler pour obtenir le codage d’un nom de compte ; c’est également beaucoup plus simple car il vous suffit de passer le nom du compte au lieu des quatre paramètres que vous devez normalement utiliser pour ajouter un utilisateur. Veillez à ce que l’utilisateur se charge automatiquement du codage du nom et simplifie réellement son code.

Pour illustrer mon propos, voici un court exemple :

using (SPSite theSite = new SPSite("http://foo"))
{
using (SPWeb theWeb = theSite.OpenWeb())
{
   SPUser theUser = theWeb.EnsureUser("domaine\nom _utilisateur");
}
}

 

Ceci est une version localisée d’un article de blog. Vous trouverez la version originale de l’article sur Adding Users Programmatically to A Claims Site in SharePoint 2010