Pregunta

¿Cómo puedo obtener el usuario actualizado en SharePoint en un módulo agregado?

He intentado los siguientes códigos, pero siempre recibo la cuenta del 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}

¿Fue útil?

Solución

ya respondido aquí:

obtener Nombre de usuario registrado actual para el usuario "Cuenta funciona como SISTEMA"

también me gusta notar:

  public SPUser GetUserWithElevated()
  {
    SPUser user = null;

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

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

    return 
  }

su ejecución bajo la cuenta del sistema;)

También me gusta tener en cuenta si la solución en mi otra respuesta no funciona, ya que supongo que no ... eso podría ser porque su cuenta se está ejecutando bajo una cuenta del sistema? Cuando inicia sesión en SharePoint, ¿qué nombre de usuario se muestra?

bajo módulo Esto debería funcionar:

HttpContext.Current.User.Identity.Name

Si eso no funciona, intente el método SPCONTEXT:

SPContext.Current.Web.CurrentUser.LoginName

Como dije, goto la URL en el navegador para primero asegurarse de que la cuenta su uso no esté establecida como una cuenta del sistema. RUNWITHELEVATED PRIV utiliza la cuenta de la Pool de App que también se muestra como Cuenta del sistema. En el código que proporcionó es que tres métodos ha intentado que todos proporcionen cuentas del sistema?

Debe probar con una cuenta ficticia para asegurarse de que no es la cuenta que usa actualmente es el problema

editar

Si utiliza la identidad de Windows para iniciar sesión a los usuarios en SharePoint de lo que puede hacer:

string getCurrentWindowsUserName = WindowsIdentity.GetCurrent().Name;

Http: // MSDN. Microsoft.com/en-us/library/vstudio/sfs49sw0(v=vs.100).aspx

Devolver diferentes tipos de cuentas depende de su configuración que tenga desde web.config a código como lo ha superado (elvated pr) a SharePoint Central Admin (Configuración de la cuenta como cuenta del sistema):

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

editar

OK, así que en función de su respuesta a continuación, puedo decir que el código está funcionando, ya que pasa el valor correcto. ¡El lugar está equivocado podría estar en dos lugares!

1) Goto Central Admin y verifique la política de usuario de la aplicación web. Haga clic en el usuario y vea si el TickBox se ejecuta como cuenta del sistema se verifica en un usuario que conoce, no se ejecuta como cuenta del sistema.

Tengo un sintimiento fuerte que lo anterior no es el problema, ya que puede tener cuentas locales creadas en SharePoint Sitio que también muestran el mismo problema? Así que se basa en esta presunción sigue el número 2 ..

2) GOTO IIS Manager -> Goto en la pregunta (haga clic en el sitio) -> En el lado derecho, haga clic en las opciones avanzadas:> Aparecerá una ventana emergente -> Asegúrese de que "Credenciales de ruta física" esté vacía. ... Haga clic en el botón '...' y debe obtener una ventana emergente -> Asegúrese de que haya marcado el usuario de la aplicación y haga clic en Aceptar!

¡Ojalá arriba debería resolver su problema!

Otros consejos

Intente seguir:

HttpContext.Current.User.Identity.Name

Licenciado bajo: CC-BY-SA con atribución
scroll top