我有一個問題,促使我有點堅果:使用UserProfileManager作爲非授權用戶。Sharepoint UserProfileManager沒有管理用戶配置文件權利
問題:用戶沒有「管理用戶配置文件」權限,但我仍想使用UserProfileManager。使用SPSecurity.RunWithElevatedPrivileges的想法似乎不起作用,因爲UserProfileManager按照看起來對SSP進行授權。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(inputWeb.Site.ID))
{
ServerContext ctx = ServerContext.GetContext(site);
UserProfileManager upm = new UserProfileManager(ctx,true);
UserProfile u = upm.GetUserProfile(userLogin);
DepartmentName = u["Department"].Value as string;
}
});
這仍然無法對「新UserProfileManager」行,用「你必須擁有管理用戶配置文件使用管理員模式管理員權限」異常。
據我瞭解,RunWithElevatedPrivileges恢復到AppPool身份。 WindowsIdentity.GetCurrent()。Name返回「NT AUTHORITY \ network service」,並且我給了那個帳號Manage User Profiles權限 - 沒有運氣。
site.RootWeb.CurrentUser.LoginName返回在RunWithElevatedPrivileges內創建的站點的SHAREPOINT \ system,該站點不是有效的Windows帳戶ofc。
有甚至有辦法做到這一點?我不想給所有用戶「管理用戶配置文件」權限,但我只想從用戶配置文件(部門,國家,直接報告)獲取一些數據。有任何想法嗎?
這似乎不適用於網絡服務。在週末,我會嘗試它是否適用於域帳戶。無論如何推薦使用域帳戶AFAIK,但我的開發機器是獨立的服務器。 – 2008-09-18 08:38:30
有趣。本週末之後,我會回頭看看這個帖子。如果它仍然不起作用,請給我另一條評論,我會看看我能挖掘出什麼。你的代碼看起來很好,我知道這是有效的,因爲我過去做過。 – senfo 2008-09-19 02:01:04