Получить удостоверение личности? текущего пользователя вроде может SharePoint?

Я нахожусь на клиентском сайте, где у них есть приложение, которое началось в SharePoint и постепенно переходит на очень настраиваемое приложение ASP.NET. Некоторые из их элементов данных по-прежнему размещены в списках SharePoint, два из которых в настоящее время рассматриваются как «Заметки» и «Задачи» (довольно простые элементы данных в их настройке SharePoint, ничего особенного в них). Одна из вещей, которые мне нужно сделать из ASP.NET, - это автоматически создавать некоторые новые элементы для этих списков и добавлять их из кода.

Пока это довольно просто. Я нашел существующую веб-часть, которая обрабатывала редактирование этих элементов, прикрепляла к ней отладчик, отслеживала, как она получала свои значения и что добавляла в список, и т. Д. Однако одно из полей, добавляемых к элементу списка, не является Это так же очевидно. В существующем пользовательском интерфейсе веб-части поле выглядит следующим образом:

Поле назначения

По сути, это поле для ввода пользователя из текущего домена Windows. Значок книги открывает всплывающее окно, которое позволяет пользователю искать имя и т. Д. В моем текущем тестировании я работаю как локальный администратор на машине разработки. Поэтому я просто ищу во всплывающем окне «admin», и он заполняет поле «[имя машины] \ Administrator», как и ожидалось. Затем при отладке значение, которое извлекается из поля и вводится в элемент списка SharePoint, равно «1», в отличие от имени или чего-то подобного.

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

Кроме того, это происходило бы не только внутри контекста приложения ASP.NET. Также существует клиентское приложение WPF для ноутбуков, которое будет генерировать эти элементы списка и синхронизировать их с сервером при подключении. В настоящее время я исхожу из предположения, что клиентский пользователь войдет в систему с надлежащей учетной записью домена, известной серверу.

Думаю, это довольно просто, я просто еще не наткнулся на то, что мне нужно.


person David    schedule 11.04.2011    source источник


Ответы (1)


Я полагаю, вы ищете это:

int userId = SPContext.Current.Web.CurrentUser.ID;

Кстати, это внутренний идентификатор, присвоенный пользователю SharePoint. Чтобы получить этот идентификатор из приложения WPF, вы можете развернуть WebService внутри SharePoint, который вернет этот идентификатор. Или вы даже можете запросить базу данных SharePoint, но я не уверен, что это безопасно :-)

person goenning    schedule 11.04.2011
comment
Отлично, определенно то, что мне нужно для стороны ASP.NET. (Я полагал, что это было просто, я просто ничего не знаю о SP.) WPF немного сложнее, потому что он должен работать в модели, иногда связанной с подключением. Так что нет никакой гарантии подключения SP. Я предполагаю, что в худшем случае клиентская машина ставит в очередь элементы в локальном хранилище (которое уже не связано с SP) и при отправке их в веб-службу назначает идентификатор, поскольку веб-служба выполняет фактическое добавление в SP. списки. Мне нужно будет уточнить у клиента, есть ли у веб-службы контекст SP. - person David; 11.04.2011
comment
Вы также можете получить этот идентификатор один раз, а затем сохранить его в новой базе данных. Было бы намного проще и быстрее. - person goenning; 11.04.2011
comment
Да, я думаю, мне придется найти обходной путь в какой-то момент. Я думаю о том, чтобы просто сохранить некоторые основные элементы данных в таблице на клиентском ноутбуке, и, когда он попадает на веб-сервер синхронизации (существующая функциональность, он синхронизирует тонны вещей прямо сейчас), просто добавьте метод для загрузки этих элементов на сервер. и пусть сервер выясняет детали. Точка остановки прямо сейчас заключается в том, что я не думаю, что контекст SP доступен в веб-службе синхронизации, поэтому мне придется обратиться к этому как к архитектурной проблеме. Спасибо! - person David; 12.04.2011
comment
Кроме того, этот идентификатор пользователя специфичен для каждого семейства сайтов. Один и тот же пользователь может (и, вероятно, будет) иметь разные идентификаторы в коллекциях. - person Kit Menke; 12.04.2011
comment
@ Кит Менке: Отметил. В данном случае это не проблема, у клиента есть только одно семейство сайтов (о котором я сейчас знаю, по крайней мере ... это не будет первым сюрпризом), и со временем он уходит с SharePoint. Но хороший совет, спасибо. (Несвязанный, но также примечательный, очевидно, сайт SharePoint Stack Exchange сегодня стал публичной бета-версией.) - person David; 12.04.2011