Domanda

Come posso ottenere la corrente registrata all'utente in SharePoint in un modulo aggiunto?

Ho provato i seguenti codici ma ottengo sempre l'account di sistema

   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}
.

È stato utile?

Soluzione

già risposto qui:

Get Nome utente registrato corrente per l'utente "Account opera come sistema"

piace anche notare:

  public SPUser GetUserWithElevated()
  {
    SPUser user = null;

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

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

    return 
  }
.

La tua correzione sotto l'account di sistema;)

piace anche notare se la soluzione nella mia altra risposta non funziona come presumo che non lo fa ... potrebbe essere perché il tuo account è in esecuzione con un account di sistema? Quando si accede a SharePoint quale nome utente viene visualizzato?

Sotto modulo Questo dovrebbe funzionare:

HttpContext.Current.User.Identity.Name
.

Se ciò non funziona piuttosto che provare il metodo SPCONTEXT:

SPContext.Current.Web.CurrentUser.LoginName
.

Come ho detto, goto L'URL sul browser per prima cosa assicurarsi che l'account che utilizzi non sia impostato come account di sistema. RunwitheleVated Priv utilizza l'account APP Pool che mostra anche come account di sistema! Nel codice che hai fornito è che tre metodi che hai provato a dare a tutti gli account di sistema?

È necessario verificare con un account fittizio per assicurarti che non sia il tuo account che il tuo attualmente utilizzo sia il problema

Modifica

Se si utilizza l'identità di Windows per accedere agli utenti di SharePoint rispetto a quello che puoi fare:

string getCurrentWindowsUserName = WindowsIdentity.GetCurrent().Name;
.

http:// msdn. microsoft.com/en-us/library/vstudio/sfs49sw0(v=vs.100).aspx

Restituzione dei tipi di account diversi dipende dalle impostazioni che hai da Web.Config al codice come hai sopra (ELVATED PRIC) a SharePoint Central Admin (Account di impostazione come account di sistema):

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

Modifica

OK Quindi in base alla tua risposta qui sotto posso dire che il codice funziona come il passaggio del valore corretto! Il posto è sbagliato potrebbe essere in due posti!

1) Goto Central Admin e controlla la politica dell'utente di WebApplication. Fare clic sull'utente e vedere se la casella di spunta Esegui come account di sistema viene controllato su un utente che sai non è possibile eseguire come account di sistema.

Ho una forte sensazione di cui sopra non è il problema che puoi avere account locali creati sul sito SharePoint che mostrano anche lo stesso problema? Quindi in base a questa presunzione, seguire il numero 2 ..

2) GOTO IIS Manager -> Goto Il sito in questione (clicca sul sito) -> Sul lato destro Clicca sulle opzioni avanzate -> Apparirà un popup -> Assicurati che "le credenziali del percorso fisico" siano vuote. ... clicca sul pulsante "..." e dovresti ottenere un popup -> Assicurati di avere l'utente dell'applicazione è selezionato e fai clic su OK!

Speriamo che sopra dovrebbe risolvere il tuo problema!

Altri suggerimenti

Prova a seguire:

HttpContext.Current.User.Identity.Name
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top