Как хранить пользовательские данные в SharePoint

У меня есть некоторые пользовательские данные, которые мне нужно хранить в SharePoint и сделать доступными для пользователя через пользовательские веб-страницы. Скажем, список избранных URL-адресов. Какой самый простой способ сохранить эту информацию?

  • Некоторый встроенный пакет свойств для SPUser или аналогичный, о котором я не знаю.
  • SPList, связанный с столбцом пользователя.
  • Таблица настраиваемых баз данных, связанная с идентификатором SPUser.
  • В противном случае?

Звучит как RTFM для меня, но я, вероятно, задаю Google неправильные вопросы.

[Обновить]

Мы в конечном итоге сохранили эту информацию в простом списке в фиксированном месте с полем "Лицо" для фильтрации. Возможно, самое простое решение, но технически я думаю, что отмеченный ответ ниже приятнее.

Ответ 1

Если вы хотите сделать их повторно используемыми в семействе сайтов для каждого пользователя, вы можете добавить поля в список сведений о пользователе. Вы можете добавить приемник функций в свое решение для веб-частей, которое может создать этот столбец, или проверить, существует ли этот столбец в списке информации пользователя, чтобы убедиться, что столбец существует.

Список информации о пользователе - это стандартный список SharePoint, который использует SharePoint для хранения информации о пользователе. Чтобы получить доступ к списку пользовательских данных, вы можете перейти в корневую сеть коллекции сайтов и использовать свойство SiteUserInfoList

например.

SPList userInformationlist = SPContext.Current.Site.RootWeb.SiteUserInfoList;
//Or 
SPWeb web = SPContext.Current.Site.RootWeb;
SPList userInformationlist = web.SiteUserInfoList;

Чтобы получить доступ к элементу списка пользователей, вы можете использовать Идентификатор пользователей, чтобы вернуть ListItem из списка сведений о пользователе

например.

SPListItem currentUserItem = userInformationlist.GetItemById(web.CurrentUser.ID);

Если вы используете MOSS, вы можете сохранить эту информацию в профилях пользователей и сделать ее доступной в коллекциях сайтов, для этого не требуется, чтобы мои сайты были включены. Для этого вам нужно будет использовать классы пользовательского профиля.

Ответ 2

Я бы пошел на свойства в профилях пользователей. Вы не хотите хранить информацию в корневом Интернете, поскольку это не информация о корневом веб-сайте. Ваш пример с любимыми URL-адресами, каждый пользователь имеет коллекцию "быстрых ссылок" в своем профиле. Идеальное место для хранения URL-адресов для каждого пользователя.:)

Ответ 3

Создайте веб-страницу, которая читает/записывает пользовательскую базу данных, и вы будете иметь возможность использовать веб-страницу через SiteCollections, WebApps или даже отдельные фермы.

Это было реализовано там, где я работаю, и это было большим успехом. Нам нужен был способ предоставить нашим конечным пользователям большой выбор важных, часто используемых ссылок. Конечные пользователи имеют возможность отображать ссылки, которые полезны для их конкретной функции работы, и иметь веб-страницу, которую можно поместить в любом месте, чтобы ссылаться на те важные для них ссылки. У вас также есть возможность для "администратора" перейти в пользовательскую базу данных и обновить любые URL-адреса, которые могут измениться без какого-либо воздействия на конечного пользователя или в результате со сломанной ссылкой.

Ответ 4

Это очень хороший вопрос.

Хотя у меня нет идеального ответа, вот некоторые вещи, которые вы можете рассмотреть:

  • Храните данные в cookie файле браузера, если это возможно.

  • Хранить в корневом каталоге коллекции сайтов в свойствах, с помощью идентификатора входа пользователя. Вы можете захотеть поднять при чтении/записи свойств только в том случае, если у пользователя есть доступ к веб-сайту, но не к корневому ресурсу.