Question

Je suis à l'aide de code suivant à usurper l'identité d'un utilisateur sur un extranet qui utilise l'Authentification Basée sur des formulaires, cependant quand il s'agit de cette ligne (SPSite s = new SPSite(siteStr, userToken);) il jette

InvalidOperationException.

J'ai testé et savoir que allUSers[4] existe.

string siteStr = "http://mywebSiteUrl/";

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(siteStr))
    {
        using (SPWeb web = site.OpenWeb())
        {
             SPUserToken userToken = web.AllUsers[4].UserToken;

             SPSite s = new SPSite(siteStr, userToken);

             SPWeb w = s.OpenWeb();

             myLiteral.Text = "Currently logged in as: " + w.CurrentUser.ToString() + "( " + w.CurrentUser.Name + ")";
         }
    }
});
Était-ce utile?

La solution 2

Le problème est résolu lorsque Vous ajoutez l'utilisateur au site sous paramètres du site -> les personnes et les groupes

Autres conseils

Pouvez-vous essayer la suite, j'ai juste continué à nouveau SPSite et SPWeb l'objet en dehors de RunWithElevatedPrivileges

string siteStr = "http://mywebSiteUrl/";
SPUserToken userToken;

SPSecurity.RunWithElevatedPrivileges(delegate()
{
  using (SPSite site = new SPSite(siteStr))
  {
    using (SPWeb web = site.OpenWeb())
    {
         userToken = web.AllUsers[4].UserToken;
     }
   }
});

SPSite s = new SPSite(siteStr, userToken);

SPWeb w = s.OpenWeb();

myLiteral.Text = "Currently logged in as: " + w.CurrentUser.ToString() + "( " + w.CurrentUser.Name + ")";
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top