Добавить товар в список анонимно (не как анонимный пользователь)?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/37053

Вопрос

У меня есть требование, чтобы аутентифицированные пользователи могли быть в состоянии анонимно добавлять элементы в список, то есть они аутентифицированы, но созданные / измененные полем не должны отображать их имя.Я мог бы просто скрыть поля с вида, но клиент даже не хочет пользователей с Admin Site Colle, чтобы увидеть, кто добавил какой товар.Я думаю, что я мог с этим с ресивером событий, который изменит рассматриваемые поля, чтобы сохранить учетную запись службы, но есть ли другой способ сделать это без привлечения пользовательского кода?

Спасибо заранее.

Это было полезно?

Решение

Вы можете сделать это через Central Admin, но я бы не рекомендовал это использовать эту процедуру для всех аутентифицированных пользователей.

    .
  • в центральном администраторе, перейдите к управлению приложениями, затем нажмите «Политика» Для веб-приложения «под безопасность приложения».
  • Выберите веб-приложение SharePoint, вы загружаете документы в

    и нажмите «Добавить пользователей».

  • Выберите нужную зону (или «все зоны») и нажмите «Далее».

  • Укажите имя вашей учетной записи, установите флажок для «Полный элемент управления» и
    Установите флажок с маркировкой «Управляет как система», затем нажмите
    «Закончить».

    рекомендуется путь, конечно, нужно использовать приемник событий к Список и используйте item.systemupdate (). Смотрите код ниже:

    public override void ItemAdded
                              (SPItemEventProperties properties)
    {
       SPUser adminUser =
           properties.Web.EnsureUser("GEEKTRAINER\\charrison");
       using (SPSite site =
           new SPSite(properties.WebUrl, adminUser.UserToken))
       using (SPWeb web = site.OpenWeb()) {
         SPList list = web.Lists[properties.ListId];
         SPListItem item = list.GetItemById(properties.ListItemId);
    
         item.BreakRoleInheritance(true);
         item.SystemUpdate();
       }
    
    
     }
    
    .

    SystemUpdate имеет два двух перегрузки, систематическуюupdate () и Systemupdate (Boolean). Вторая перегрузка позволяет контролировать, создается ли новая версия, передавая их. По умолчанию (без перегрузки параметров) не является ложным - не создавайте новую версию.

Другие советы

Я думаю, что вы можете использовать список .systemupdate ()

с item.update (), мы обновляем изменения, которые сделаны в элемент списка.Это все что это делает?Нет, внутренне он также обновляет поля «модифицированных» и «модидиента» в соответствии с текущим вошедшим в систему пользовательского и текущего сервера.Необязательно это также обновляет версию элемента, если параметр версификации включен для этого конкретного списка.

Так, в любой момент, если мы хотим не обновлять эти дополнительные вещи, то есть «модифицированный», «модифицированныйлог» и «версия элемента», то решение для него является использование элемента .systemupdate () вместо предмета.Обновлять().Это поможет вам обновлять только эти поля, которые указаны в ваших блоках кода.

Вы всегда можете иметь код, работающий на элементу, который должен работать при использовании элемента, который должен работать в SPSECURITY.RUNWITHELEVATEDPRIVILEGES и выполнять с ним обновление или использовать что-то подобное для обновления с определенным «фиктивным пользователем» (проверкакод - я только что написал это на месте!).

Вам необходимо проверить, что произойдет, если у вас есть версификация включена (если есть чехол для этого!)

using(SPSite currentSite = new SPSite(properties.Site.Url))
{ 
    SPWeb oWeb = oSite.OpenWeb();

    SPList oList = oWeb.Lists["TestCustomList"];
    SPListItemCollection oListCollection = oList.Items;
    foreach (SPListItem oListItem in oListCollection)
    {
        SPFieldUserValue oUser =
        new SPFieldUserValue(
            oWeb,
            oWeb.CurrentUser.ID,
            oWeb.CurrentUser.LoginName);

        // or you can hard code the value like this
        SPFieldUserValue oUser = new SPFieldUserValue(oWeb, 14, "Dummy User");
        oListItem["Author"] = oUser;//created by column value = "14;#DummyUser"
        oListItem["Editor"] = oUser;//modified by column value = "14;#DummyUser"              
        oListItem.Update();              
    }         
    oWeb.Update();
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top