现在,我正在使用 SPSecurity.RunWithElevatedPrivileges 方法让匿名用户将列表项添加到列表中。我想做的是制作一个通用方法,它将站点、列表和列表项作为参数并将该项添加到正在传递的列表中。现在我有:
public static void AddItemElevated(Guid siteID, SPListItem item, SPList list)
{
SPSite mySite = SPContext.Current.Site;
SPList myList = WPToolKit.GetSPList(mySite, listPath);
SPWeb myWeb = myList.ParentWeb;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite eleSite = new SPSite(mySite.ID))
{
using (SPWeb eleWeb = eleSite.OpenWeb(myWeb.ID))
{
eleWeb.AllowUnsafeUpdates = true;
SPList eleList = eleWeb.Lists[myList.Title];
SPListItem itemToAdd = list.Items.Add();
itemToAdd = item;
itemToAdd.Update();
eleWeb.AllowUnsafeUpdates = false;
}
}
});
}
问题是“item”在提升的权限之外被初始化,所以当“itemToAdd”设置为“item”时,它会失去提升的权限,如果使用我的非特权用户。
有什么想法吗?