如何从其他用户的帐户初始化客户端上下文

时间:2018-05-09 05:16:00

标签: sharepoint-2013 impersonation csom

目前,我正在处理从非SharePoint页面调用以运行SharePoint代码以执行某些操作的.net web api。我已共享配置的visual studio,以便每个人都可以通过我系统的IP URL访问该页面。 web api中的代码工作正常,因为它总是将我的帐户用于执行每个操作。

那么,如果我拥有用户的域名,我们如何从其他用户帐户运行客户端上下文。

keys = ['key1', 'key2', 'key3']
links_list = []

# loop through all keys and search for them
for key in keys:
    searchbox = driver.find_elements_by_name('searchterm')[1]
    searchbox.send_keys(key)
    button = driver.find_element_by_xpath("//div[contains(@class, 'submit-btn')]")
    button.click()

    # go through all the search results per key and add them to the links_list
    div = driver.find_elements_by_class_name('search-result')
    for tags in div:
        links = (tags.find_elements_by_css_selector('a'))
        for elem in links:
            links_list.append(elem.get_attribute('href'))

如果我想在此用户名下运行clientcontext。我怎样才能做到这一点。我发现下面的代码适用于服务器端

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;

CSOM中此代码的替代方法是什么。

提前致谢

1 个答案:

答案 0 :(得分:0)

我们可以使用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
}

参考Authentication when using the SharePoint client object model