Question

Comment puis-je obtenir l'utilisateur actuel connecté à SharePoint dans un module supplémentaire?

J'ai essayé les codes suivants mais je reçois toujours le compte système

   SPUser user = null;

    using (SPSite site = new SPSite(@"siteName"))
    {

        using (SPWeb web = site.OpenWeb())
        {

            user = web.CurrentUser;
        }
    }

 //and

 SPContext.Current.Web.CurrentUser

 //and

  public SPUser GetUserWithElevated()
  {
    SPUser user = null;

    SPSecurity.CodeToRunElevated elevatedSubmit = new 
    SPSecurity.CodeToRunElevated(delegate
    {

         user = SPContext.Current.Web.CurrentUser;
    });
    SPSecurity.RunWithElevatedPrivileges(elevatedSubmit);

    return user;
 }


//this is my Httpmodule: 

 public void Init(HttpApplication context)
{
    context.PreRequestHandlerExecute += new 
 EventHandler(context_PreRequestHandlerExecute);
 }

 void context_PreRequestHandlerExecute(object sender, EventArgs e)
 {
    Page page = HttpContext.Current.CurrentHandler as Page;
    if (page != null)
    {
        // register handler for PreInit event
        page.PreInit += new EventHandler(page_PreInit);
    }
 }

 void page_PreInit(object sender, EventArgs e)
 { //user interception goes here}

Était-ce utile?

La solution

déjà répondu ici:

Le nom d'utilisateur enregistré actuel pour l'utilisateur "compte fonctionne comme système"

Aussi comme noter:

  public SPUser GetUserWithElevated()
  {
    SPUser user = null;

    SPSecurity.CodeToRunElevated elevatedSubmit = new 
    SPSecurity.CodeToRunElevated(delegate
    {

         user = SPContext.Current.Web.CurrentUser;
    });
    SPSecurity.RunWithElevatedPrivileges(elevatedSubmit);

    return 
  }

Votre course sous le compte système;)

aime aussi noter si la solution dans mon autre réponse ne fonctionne pas comme je le suppose, cela ne pourrait pas être ... cela pourrait être parce que votre compte est en cours d'exécution sous un compte système? Lorsque vous vous connectez à SharePoint, quel nom d'utilisateur est affiché?

Sous Module, cela devrait fonctionner:

HttpContext.Current.User.Identity.Name

Si cela ne fonctionne pas que d'essayer la méthode SPContext:

SPContext.Current.Web.CurrentUser.LoginName

Comme je l'ai dit, utilisez l'URL sur le navigateur pour d'abord vous assurer que le compte de votre utilisation n'est pas défini comme un compte système. RunwithheLeVark privilment utilise le compte de pulpe d'application qui figure également en tant que compte système! Dans le code que vous avez fourni est la suivante: trois méthodes que vous avez essayées que tous donnent des comptes système?

Vous devez tester avec un compte factice pour vous assurer que ce n'est pas le compte que vous utilisez actuellement, c'est le problème

Modifier

Si vous utilisez l'identité Windows pour identifier les utilisateurs dans SharePoint que vous ne pouvez le faire:

string getCurrentWindowsUserName = WindowsIdentity.GetCurrent().Name;

http:// msdn. Microsoft.com/en-us/Library/vstudio/sfs49SW0(V=VS.100).aspx

Renvoi de types de compte Différents dépend de vos paramètres de Web.config au code comme vous avez ci-dessus (privé privilégié) à SharePoint Central Admin (Compte de réglage comme compte système):

http://msdn.microsoft.com/en-us/library /aa302377.aspx

Modifier

OK, en fonction de votre réponse ci-dessous, je peux dire que le code fonctionne comme étant sa valeur correcte! L'endroit que c'est mal pouvait être à deux endroits!

1) Goto Central Admin et vérifiez la stratégie utilisateur WebApplication. Cliquez sur l'utilisateur et voyez si la Boîte de caisse exécutée en tant que compte système est cochée sur un utilisateur que vous connaissez n'est pas à exécuter en tant que compte système.

J'ai un sentiment fort ce qui précède n'est pas le problème que vous pouvez avoir des comptes locaux créés sur le site SharePoint qui montrent également le même problème? Donc, basé sur cette présomption, suivez le numéro 2 ..

2) GOTO IIS Manager -> Goto Le site en question (cliquez sur le site) -> du côté droit, cliquez sur Options avancées -> Un popup apparaîtra -> Assurez-vous que "Les informations d'identification physiques" sont vides. ... Cliquez sur le bouton "..." et vous devriez obtenir une pop up -> Assurez-vous que l'utilisateur d'application est cochée et cliquez sur OK!

Espérons qu'avec ci-dessus devrait résoudre votre problème!

Autres conseils

essayer en suivant:

HttpContext.Current.User.Identity.Name

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top