Получение имени пользователя в Sharepoint?
Как Sharepoint получает действительное имя пользователя, отображаемое в верхнем правом углу? например Welcome John Smith
Мне нужно назвать это имя как переменную или параметр в пользовательском коде в редакторе XSL, но я не могу понять, как его можно получить, это глобальная переменная?
4 ответа
Вы можете получить имя учетной записи пользователя, используя переменную сервера LOGON_USER. Однако это не возвращает отображаемое имя пользователя.
Мне удалось получить что-то работающее, комбинацию веб-частей для отображения их имени:
- Добавить
UserContextFilterWebPart
(может потребоваться включить эту веб-часть в галерее веб-частей). - Добавьте веб-часть DataView, которая запрашивает
GetUserInfo
метод (часть веб-службы UserGroup.asmx).- а. Нажмите "Подключиться к веб-службе..." на панели "Библиотека источников данных" в разделе "Веб-службы XML".
- б. Введите местоположение описания службы (URL-адрес веб-службы группы пользователей). Пример:
http://server/sites/SiteCollection/SubSite/_vti_bin/UserGroup.asmx?WSDL
- с. Нажмите Подключиться (или переподключиться)
- д. выберите
GetUserInfo
для раскрывающегося списка Операция (другие раскрывающиеся списки должны быть в порядке) - е. Измените параметр userLoginName и установите флажок, чтобы разрешить установку значения через соединение веб-части. Я также добавил значение по умолчанию для тестирования (например: домен \ логин).
- е. Нажмите ОК.
- г. Нажмите на источник данных и нажмите Показать данные
- час Выберите нужные столбцы и перетащите их на страницу
- Соедините их вместе, используя соединения веб-частей (UserContext предоставлен для DataView).
Если вы хотите использовать SPServices (что здорово, кстати):
function getCurrentUsersName(){
var firstName = $().SPServices.SPGetCurrentUser({
fieldName: "FirstName",
debug: false
});
return firstName;
}
function getCurrentUsersLastName(){
var lastName = $().SPServices.SPGetCurrentUser({
fieldName: "LastName",
debug: false
});
return lastName;
}
Вы можете посмотреть множество других похожих полей здесь:
SPContext.Current.Web.CurrentUser.LoginName предоставит вам значение для имени пользователя для текущего пользователя, как показано в правом верхнем углу стандартного портала.
Если вы хотите использовать это с XSLT, вам нужно найти способ присвоения этого значения параметру XSL во время выполнения.
Я полагаю, что он приходит через NTLM-аутентификацию /Active Directory. Обычно я получаю имя входа DOMAIN/User в поле HttpContext.Current.User.Identity.Name, а затем сопоставляю его с Active Directory и возвращаю фактическое имя пользователя.