2012-01-23 11 views
3

Windows認証を使用するイントラネットサイトで、特定のユーザー/グループおよびロールへのアクセスを制御する「AuthorizeAttribute」というマークが付いた特定のコントローラメソッドについては、これらのものにアクセスするためにユーザーをテストします。AuthorizeAttributeを使用したMVC統合テスト

<の位置>はMVCのテーブル(セキュリティ上の懸念事項)から外れているので、ここで最善のアプローチは何ですか?

私の最初の考えは以下を実装することです:

  1. 本質的<承認>セクション
  2. カスタム設定に対してユーザーをチェックし、「AuthorizeAttribute」から継承するカスタム属性を反映するカスタムconfigセクションセクション
  3. QAおよびリリース環境のカスタム設定セクションを削除するには、configトランスフォームを使用してください。

もっと楽な方法がありますか?私はもともとクラスやメソッドの属性構文を使用していますが、MVC3を使用している場合、あなたはまた、(global.asax.cs)でグローバルアクションフィルタを使用することができます書いた何

+2

わかりません。テストユーザーを適切なグループ/ロールに追加するべきではなく、コードや設定で何も変更しないでください。 –

+0

QAでは、それは専用のテストユーザーだから、そうだよ。しかし、デバッグからステージングまで、テストユーザーは通常私です。そして、私はドメインアカウントの作成権限を与えられていません... – Didaxis

答えて

1

更新 ので、あなただけしなければなりませんそれは一度。

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 

承認属性は、そう、あなたの生産許可されたユーザのリストを繰り返すかの#elseを使用する必要はありません複数のことができます。

+0

Ew、それは滑らかです!私はそれが好きです! – Didaxis

関連する問題