14 septembre 2009

SHAREPOINT : Utiliser impersonation

Dans le développement d'un formulaire Infopath (et plus particulièrement lorsque vous développez un fomulaire Infopath Form Services, vous êtes amené à aller chercher des informations sur Sharepoint.
Parfois, les utilisateurs n'ont pas le droit d'y accéder et vous devez passer par l'impersonnation en utilisant la méthode dîtes du RunWithElevatedPrivileges...
Celle-ci peut-être rapidement un casse-tête si elle est mal utilisée.
Elle doit se présenter de la façon suivante:
     Guid webGuid = SPContext.Current.Web.ID;
     Guid siteGuid = SPContext.Current.Site.ID;
     SPSecurity.RunWithElevatedPrivileges(delegate()
    {
         // Context du site dans le RunWithElevatedPrivileges
         using (SPSite site = new SPSite(siteGuid))
         {
               // Context du webdans le RunWithElevatedPrivileges
               using (SPWeb web = site.OpenWeb(webGuid))
              {
                     // ...
              }
         }
    });
Attention à bien récupérer les GUID avan pour les utiliser ensuite dans le delegate.
En effet si l'on utilise par exemple "SPWeb web = SPContext.Current.Web;", l'impersonnation ne fonctionnera pas puisque l'on récupérera le contexte de l'utilisateur.
Ce code est donc à manipuler avec la plus grande attention.
Notez qu'il n'est pas necessaire d'utiliser un site.Dispose() ou web.Dispose() de par l'utilisation des instructions using...

Aucun commentaire:

Enregistrer un commentaire