2015-01-26 73 views
3

這可能是一個奇怪的問題,但我希望實現的功能是允許特定用戶查看SharePoint頁面,就好像他們以不同用戶身份登錄一樣。在Sharepoint 2013上以編程方式模擬用戶(C#)

比方說,我們有一個學生頁面和一個職員頁面。我不是學生,但我想以一個學生的身份登錄,以便能夠查看學生頁面。那有意義嗎?所以,在某種程度上,模仿。

我發現了一些模擬代碼,它工作正常,但它不是我想要的。我能夠在單獨的SPWeb對象中模擬用戶。但是,如何更改活動SPWeb對象的當前用戶上下文?

下面是我得到了什麼:

private void ImpersonateUser() 
    { 
     string siteURL = "http://mywebsite/"; 
     SPSite parentSite = new SPSite(siteURL); 
     SPUserToken systemToken = parentSite.SystemAccount.UserToken; 
     using (SPSite site = new SPSite(siteURL, systemToken)) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 
       web.AllowUnsafeUpdates = true; 
       OpenUserContext(web, siteURL, @"domain\studentuser"); 
      } 
     } 
    } 

    private void OpenUserContext(SPWeb web, string siteURL, string user) 
    { 
     try 
     { 
      SPUser ensure = web.EnsureUser(user); 
      SPSite impSite = new SPSite(siteURL, ensure.UserToken); 
      SPWeb impWeb = impSite.OpenWeb(); 

      // Do something as impersonated user 
      label1.Text = "Currently logged in as: " + impWeb.CurrentUser.ToString() + "(" + impWeb.CurrentUser.Name + ")"; 

     } 
     catch (Exception ex) { label1.Text = ex.Message + "<br>" + user; } 
    } 

非常感謝。

回答

0

雖然SharePoint確實允許您的代碼在模仿用戶的同時與其進行交互,但它不支持讓您像瀏覽其他用戶一樣瀏覽和查看內容。

但是,您可以編寫您的自定義文件來考慮您的願望,並向他們添加模擬邏輯(但這取決於您的實施,SP不會幫助您)。 Project Server的功能與您所要求的一樣,但僅限於Project Server擁有的元素。

+0

如果您實施自己的安全令牌服務,並且在用戶登錄時說謊,說您的用戶實際上是其他人,我可以看到它正在完成 - 這不是我已經玩過的東西... – Choggo 2015-01-28 17:37:24

+0

Valeu! !這是我們已經實現的功能,並且我希望能夠在SharePoint中執行相同的功能。你有開發和部署Web部件的經驗嗎? – Naner 2015-01-28 22:41:32

+0

是的,我確實有過這樣的經歷 – Choggo 2015-01-28 22:44:19

0

如果您的模擬代碼在SharePoint中的自定義.aspx頁面後執行,則可以以編程方式將xsltlistviewwebpart添加到該頁面,以便在模擬的上下文中顯示一個或多個列表視圖。

相關問題