UserProfileManager를 사용하여 사용자 지정 웹 파트에 사용자 목록을 표시하려고합니다. 웬일인지, 나는 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을 만들 수 있습니까?
감사합니다.
답장을 보내 주셔서 감사합니다. 실제로 HttpContext를 추가하여 유사한 접근 방식을 사용했습니다. currentContext = HttpContext.Current; HttpContext.Current = null; – R100
사이트에서 익명 사용자가 허용 된 경우에는 작동하지 않습니다. –