2010-11-23 108 views
1

是否有一種簡單的方法可以用IPrincipal替換當前User對象(控制器內部的那個對象)具有另一個用戶的屬性?我正在考慮用戶Windows身份驗證和AD組的環境,因此需要複製所有AD屬性。在ASP.NET MVC中模擬用戶進行測試

「硬」的方法是做LDAP查詢並實現IPrincipal接口,但我想避免這種情況。

+1

我懷疑你是過comlicating它。你能否顯示你正在測試的控制器動作? – 2010-11-23 21:03:57

+0

我不是想測試一個控制器操作。當在我的本地機器上運行應用程序時,能夠模擬特定用戶的想法,並查看一切工作原理。 – 2010-11-23 21:13:11

回答

1

我解決了這個通過添加這樣的屬性,以我的基本控制器:

new public IPrincipal User 
    { //we override User for impersonation 
     get { 
      if (/*check for impersonation*/) 
      { 
       return /*impersonated*/; 
      } 
      else 
      { 
       return base.User; 
      } 
     } 
    } 
0

創建一個接口/類來包裝對當前用戶對象的訪問。您的自定義服務可以返回用戶對象或任何您想要的內容,並且在測試中很容易進行模擬。