如何在SharePoint中存储特定于用户的数据

10

我有一些用户特定的数据需要存储在SharePoint中,并通过自定义web部件向用户提供访问权限。比如一个收藏夹链接列表。最简单的存储这些信息的方式是什么?

  • SPUser或类似对象的内置属性包。
  • 通过用户列关联的SPList。
  • 自定义数据库表,通过SPUser ID相关联。
  • 其他方式?

听起来像是RTFM(阅读说明文档),但我可能没有用正确的关键词搜索。

[更新]

我们最终将此信息存储在一个简单的固定位置的列表中,并使用Person字段进行筛选。也许这确实是最简单的解决方案,但从技术上讲,我认为下面标记的答案更好。

4个回答

5
如果您想使它们在整个站点集中对每个用户可重用,可以将字段添加到“用户信息”列表中。您可以向Web部件解决方案添加功能接收器,以创建此列或检查此列是否存在于用户信息列表中,以确保该列存在。
“用户信息”列表是标准的SharePoint列表,SharePoint用于存储用户信息。 要访问用户信息列表,您可以转到站点集的根Web并使用SiteUserInfoList属性。
例如:
SPList userInformationlist = SPContext.Current.Site.RootWeb.SiteUserInfoList;
//Or 
SPWeb web = SPContext.Current.Site.RootWeb;
SPList userInformationlist = web.SiteUserInfoList;

为了访问用户的列表项,您可以使用用户ID从“用户信息列表”中获取列表项。
例如:
SPListItem currentUserItem = userInformationlist.GetItemById(web.CurrentUser.ID);

如果您正在使用MOSS,您可以将此信息存储在用户配置文件中,并使其在网站集合中可用,而无需启用My Sites。您需要使用用户配置文件类来访问此信息。

非常好的建议!我不知道SiteUserInfoList,而且我可能只需要一个站点集合(更大的SharePoint布局设计仍在等待中)。因为我需要存储的数据量很小并且是原子性的,所以我可以将其保存在单个Note字段中。 - Paul-Jan
用户配置文件的属性包也应该很好地工作。为了存储一些数据而创建配置文件似乎有点过于繁琐,但这可能会非常有效。 - Paul-Jan
用户信息列表是核心的WSS列表,MOSS则有一个由SSP提供的单独的用户配置数据库,将一些数据同步到本地的用户信息列表中。如果要访问此数据,则使用用户配置数据库会更加繁琐,但这取决于您想在哪里访问此数据,因为用户信息列表存储在站点集合内部。 - JC Vivian

2

我建议在用户个人资料中存储属性。您不希望将信息存储在根网站上,因为这不是有关根网站的信息。 就您提到的收藏夹链接而言,每个用户在其个人资料中都有一个“快速链接”集合。这是为每个用户存储url的理想位置。 :)


2
构建一个可以读写自定义数据库的Webpart,您将拥有在SiteCollections、WebApps甚至是不同Farm中使用Webpart的灵活性。
这已经在我工作的地方实施,并且取得了巨大成功。我们需要一种方式来为最终用户提供大量重要的常用链接。最终用户能够显示对他们特定工作职能有用的链接,并且具有可以放置在任何位置以引用对他们重要的链接的Webpart。您还可以让“管理员”去自定义数据库并更新任何可能更改的URL,而最终用户永远不会受到影响或出现损坏链接的情况。

1

这是一个非常好的问题。

虽然我没有完美的答案,但以下是一些您可以考虑的事情:

  • 如果可行,将数据存储在浏览器 cookie 中。

  • 在站点集合的根网站中以属性的形式存储,由用户的登录 ID 作为键。在读取/写入属性时,您可能需要提升权限,以防用户可以访问子网站但无法访问根网站。


1
我不建议使用Rootwebs属性集合;因为它并不适用于大量记录,所以会影响您网站的性能。 - JC Vivian
创造性思维,但是Cookie并不像我希望的那样持久。 - Paul-Jan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接