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

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

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

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

[Обновление]

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

10
задан Paul-Jan 4 June 2010 в 07:13
поделиться

4 ответа

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

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

Напр.

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

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

Напр.

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

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

5
ответ дан 4 December 2019 в 01:30
поделиться

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

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

  • Сохраните данные в куки-файлах браузера, если это возможно.

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

1
ответ дан 4 December 2019 в 01:30
поделиться

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

2
ответ дан 4 December 2019 в 01:30
поделиться

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

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

2
ответ дан 4 December 2019 в 01:30
поделиться