Añadir tareas a la lista de un usuario

12/07/2006 - 20:57 por Ana | Informe spam
Quiero añadir un SPListItem a una lista de un usuario concreto que no es el
usuario de la sesión de windows. No me deja asignar el campo author y tampoco
usar Impersonation.
A lo mejor puedo navegar hasta la lista del usuario dentro de la web, pero
no sé como hacerlo.

El código que tengo:

SPSite site = new SPSite(spDireccion.Site);
SPWeb web = site.OpenWeb(spDireccion.Web);

bool siteAllow = site.AllowUnsafeUpdates;
bool webAllow = web.AllowUnsafeUpdates;
site.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;

SPList lista = web.Lists[spDireccion.Lista];

WindowsIdentity wi = new WindowsIdentity(user);
WindowsImpersonationContext ctx = wi.Impersonate();

SPListItem item = lista.Items.Add();
ctx.Undo();
return item;

¿Es posible navegar hasta la web o la lista de un usuario en concreto?

Gracias
 

Leer las respuestas

#1 Gustavo
13/07/2006 - 10:46 | Informe spam
Hola Ana,
En el codigo que muestras no aparece de donde sale el "user" para
"WindowsIndentity". Este metodo utiliza un token para impersonar al usuario,
y el token lo puedes encontrar usando "LogonUser" (por medio de un call al
Win32 API pues DotNet no tiene clases para hacerlo) y el
"WindoesImpersonationContext", pero siempre necesitaras el login y clave del
usuario a impersonar para poderlo hacer.

Dicho de otra forma, tengo la sospecha de que no estas impersonando al
usuario correcto, sino que estas usando el usuario actual.

Si me permites una sugestion, hay clases regadas por internet que te
permiten hacer una impersonalizacion sin meterte en los problemas de
descifrar el API de Win32. Si usas una de estas clases, podras hacer la
impersonalizacion mas facilmente, aunque de todas formas necesitaras siempre
el login y clave del usuario a impersonar.

Suerte,
Gustavo
http://www.gavd.net/servers/default.aspx
http://geeks.ms/blogs/gvelez/


"Ana" wrote:

Quiero añadir un SPListItem a una lista de un usuario concreto que no es el
usuario de la sesión de windows. No me deja asignar el campo author y tampoco
usar Impersonation.
A lo mejor puedo navegar hasta la lista del usuario dentro de la web, pero
no sé como hacerlo.

El código que tengo:

SPSite site = new SPSite(spDireccion.Site);
SPWeb web = site.OpenWeb(spDireccion.Web);

bool siteAllow = site.AllowUnsafeUpdates;
bool webAllow = web.AllowUnsafeUpdates;
site.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;

SPList lista = web.Lists[spDireccion.Lista];

WindowsIdentity wi = new WindowsIdentity(user);
WindowsImpersonationContext ctx = wi.Impersonate();

SPListItem item = lista.Items.Add();
ctx.Undo();
return item;

¿Es posible navegar hasta la web o la lista de un usuario en concreto?

Gracias

Preguntas similares