【发布时间】:2011-06-30 02:27:39
【问题描述】:
我正在尝试使用 UserProfileManager 在自定义 Web 部件中显示用户列表。出于某种原因,我可以查看 webpart 并且所有配置文件都输出到屏幕上(可能是因为我是管理员)。但是当标准用户登录时,他们会遇到 403 页面。
我已经对此进行了一些阅读,并且我知道它与权限有关。这就是我的代码中的内容:
private DataTable GetProfiles()
{
DataTable dtUserProfile = new DataTable();
//...DataTable Columns
SPSecurity.RunWithElevatedPrivileges(delegate()
{
Guid guid = SPContext.Current.Site.ID;
using (SPSite intranet = new SPSite(guid))
{
SPUserToken userToken = intranet.Owner.UserToken;
//Get current intranet context.
SPServiceContext sContext = SPServiceContext.GetContext(intranet);
UserProfileManager profileManager = new UserProfileManager(sContext);
int totalUsers = int.Parse(profileManager.Count.ToString());
Random random = new Random();
for (int i = 0; i < NumberOfUsersToRetrieve(NoOfProfiles, totalUsers); i++)
{
int randNumber = random.Next(1, totalUsers);
DataRow drUserProfile;
UserProfile up = profileManager.GetUserProfile(randNumber);
drUserProfile = dtUserProfile.NewRow();
drUserProfile["DisplayName"] = up.DisplayName;
drUserProfile["FirstName"] = up["FirstName"].Value;
drUserProfile["LastName"] = up["LastName"].Value;
drUserProfile["Department"] = up["Department"].Value;
drUserProfile["ContactNumber"] = up["Office"].Value;
drUserProfile["MySiteUrl"] = up.PublicUrl;
dtUserProfile.Rows.Add(drUserProfile);
}
}
});
return dtUserProfile;
}
我的代码基本上会根据我想要返回的用户数量来随机收集用户。
是否可以为检索用户配置文件所需的所有权限的用户创建一个 SPUserToken?
谢谢!
【问题讨论】:
标签: sharepoint permissions sharepoint-2010 web-parts