我正尝试使用UserProfileManager显示自定义web部件中的用户列表。出于某种原因,我可以查看webpart并将所有配置文件输出到屏幕(可能是因为我是管理员)。但是当一个标准用户登录时,他们会遇到一个403页面。在SharePoint 2010中允许UserProfileManager权限
我已经做了一些阅读,我知道它与权限有关。这是我在我的代码:
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,以获取检索用户配置文件所需的所有权限?
谢谢!
那么我要更换这行:“SPUserToken userToken = intranet.Owner.UserToken;”与“SPUserToken userToken = SPWeb.AllUsers [”user“]。UserToken;”? “用户”是具有管理员权限的用户吗? – R100 2011-02-18 21:29:50
更准确地说,SPUserToken userToken = intranet.OpenWeb()。AllUsers。[“user”]。UserToken - 是的,“user”将是具有所需特权的那个。 – 2011-02-19 00:01:56