Как инициализировать клиентский контекст из учетной записи другого пользователя - PullRequest
0 голосов
/ 09 мая 2018

В настоящее время я работаю над сетевыми API-интерфейсами .net, которые вызываются со страниц не из SharePoint для запуска кода SharePoint для выполнения определенных действий. Я поделился настроенной Visual Studio, чтобы каждый мог получить доступ к странице через IP-адрес моей системы. Код в web api работает нормально, за исключением того, что он всегда использует мою учетную запись для выполнения каждого действия.

Итак, как мы можем запустить клиентский контекст из учетной записи другого пользователя, если у меня есть доменное имя пользователя.

ClientContext clientContext = new ClientContext(siteUrl);
Web web = clientContext.Web;
User user = web.EnsureUser(@"domain\user1");
clientContext.Load(user);
clientContext.ExecuteQuery();
string title = user.Title;
string loginName = user.LoginName;

Если я хочу запустить clientcontext под этим именем пользователя. Как я могу это сделать. Я нашел код ниже, который работает на стороне сервера

SPUserToken userToken = web.AllUsers[user].UserToken;
SPSite s = new SPSite(siteStr, userToken);
SPWeb w = s.OpenWeb();
Console.WriteLine("Currently logged in as: " +
                  w.CurrentUser.ToString() +
                  "(" + w.CurrentUser.Name + ")"
                 );

Какая альтернатива этому коду в CSOM.

Заранее спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Мы можем использовать метод NetworkCredential для передачи учетных данных пользователя, фрагмент кода ниже для справки:

using (ClientContext context = new ClientContext("http://yourserver/")) {
    context.Credentials = new NetworkCredential("user", "password", "domain");
    List list = context.Web.Lists.GetByTitle("Some List");
    context.Load(list);
    context.ExecuteQuery();

    //do something
}

Ссылка : Аутентификация при использовании объектной модели клиента SharePoint

...