2012-01-23 130 views
3

在使用Windows身份驗證的Intranet站點上,某些控制器方法使用控制對某些用戶/組和角色的訪問的「AuthorizeAttribute」進行標記,我試圖找出允許「測試用戶「來訪問這些東西。使用AuthorizeAttribute進行MVC集成測試

由於<位置>與MVC(安全問題)關係不佳,這裏最好的方法是什麼?

我首先想到的是要實現以下:

  1. 自定義配置部分,基本上反映了<授權>部分
  2. ,從「AuthorizeAttribute」,它會檢查用戶對自定義配置繼承的自定義屬性部分
  3. 使用config轉換爲QA和發佈環境刪除自定義配置部分

有沒有更簡單/更好的方法?

+2

不知道我明白。您不應該將測試用戶添加到適當的組/角色,並且不會更改代碼和配置中的任何內容嗎? –

+0

在QA中,它是專門的測試用戶,所以是的,你說的是什麼。但是從Debug到Staging,測試用戶通常是我。而且我沒有賦予Domain Account Creation權力...... – Didaxis

回答

1

更新 我本來寫上使用一類或方法的屬性語法,但如果你正在使用MVC3您也可以使用(的global.asax.cs)全球行動過濾器,所以你只需要做它曾經。

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
#if DEBUG 
    filters.Add(new AuthorizeAttribute() {Users="YourAccount"}); 
#endif 
    //Your other global action filters 
} 

原始 你可以使用#if DEBUG只授權添加到調試代碼。

#if DEBUG 
    [Authorize(Users = "YourAccount")] 
#endif 

Authorize屬性允許多個,所以您不必重複您的生產授權用戶列表或使用#else。

+0

Ew,這很光滑!我喜歡! – Didaxis