2009-01-05 6 views
5

J'essaie de trouver le nom d'utilisateur actuel pour mon application sharepoint. Il y a plus d'une façon de le faire. Cependant, le point de partage renvoie une valeur trompeuse.SPContext.Current.Web.CurrentUser renvoie une valeur trompeuse

System.Security.Principal.WindowsIdentity.GetCurrent().Name // returns MY_COMPUTER\\my_user 

HttpContext.Current.User.Identity.Name // returns MY_COMPUTER\\my_user 

HttpContext.Current.Request.ServerVariables["AUTH_USER"] // returns MY_COMPUTER\\my_user 

Microsoft.SharePoint.SPContext.Current.Web.CurrentUser.LoginName // returns SHAREPOINT\\system 

Quelle est la cause de ce problème? Est-ce que je rencontrerai des problèmes si je vais utiliser un mode non-sharepoint?

+0

Cela peut être un problème d'installation car une recherche rapide de l'Internet semble montrer qu'il retourne correctement et pas le SHAREPOINT \ System que vous voyez. –

Répondre

5

Ceci est prévu si l'utilisateur est le compte du pool d'applications exécutant l'application Web en cours.
BTW, il est censé être le même nom que affiché dans le contrôle de bienvenue (commande en haut à gauche)

6

Recherchez-vous le compte d'administrateur que vous avez utilisé pour installer le système? SharePoint va "utilement" renommer ce SHAREPOINT \ System. Utilisez un compte différent et toutes les méthodes renverront la même valeur.

0

L'autre SPWeb.CurrentUser façon pourrait revenir SHAREPOINT \ système est si le web est élevé, bien que je ne suis pas sûr pourquoi SPContext.Current serait élevé. Sur quel type de page voyez-vous ce comportement?

1

Je pense que vous pourriez avoir inclus ce code sous SPSecurity.RunWithElevatedPriviliges. Vérifiez-le une fois. Je ne suis pas sûr si

4

Le problème est que vous obtenez probablement l'utilisateur actuel d'un SPWeb élevé dans un code RunWithElevatedPrivileges. Vous pouvez utiliser l'extrait ci-dessous pour obtenir l'utilisateur réel

SPWeb site = SPContext.Current.Web; 
SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    using (SPSite ElevatedsiteColl = new SPSite(siteColl.ID)) 
    { 
     using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID)) 
     { 
      string currUser = site.CurrentUser; //not the ElevatedSite.CurrentUser 
     } 
    } 
}); 

Cela montrera le vrai nom d'utilisateur au lieu du SHAREPOINT \ utilisateur du système.

Questions connexes