Программное добавление пользователей на сайт с поддержкой утверждений в SharePoint 2010

Исходная статья опубликована в субботу, 14 января 2012 г.

На днях мой друг рассказал мне об интересной проблеме. Он пытался программным образом добавить нового пользователя на сайт с поддержкой утверждений Windows и столкнулся с целым рядом затруднений. Первая попытка добавить пользователя, указав имя домена и имя пользователя с помощью класса SPRoleAssignment, окончилась неудачей. Затем он попытался слегка изменить свой подход, добавив значение, закодированное с использованием утверждений, для имени пользователя, и заставил частично работать этот метод, однако получил какие-то странные побочные эффекты, например двукратное появление имени. Я не смог лично проверить все возникшие у него варианты и проблемы, но смог найти способ, который сработал с первой же попытки. Я воспользовался методом EnsureUser в SPWeb. Это намного проще, чем возиться с поиском закодированного имени учетной записи. Это также намного проще, поскольку достаточно передать только имя учетной записи вместо четырех параметров, которые обычно необходимо использовать для добавления пользователя. EnsureUser автоматически кодирует имя и позволяет реально упростить код.

Вот короткий пример для полноты изложения:

using (SPSite theSite = new SPSite("http://foo"))
{
  using (SPWeb theWeb = theSite.OpenWeb())
  {
    SPUser theUser = theWeb.EnsureUser("domain\username");
  }
}

 

Это локализованная запись блога. Исходная статья находится по адресу: Adding Users Programmatically to A Claims Site in SharePoint 2010