2012-07-18 23 views
18

私はフォームauthでMVCアプリケーションを作成しています。私はアクティブディレクトリに対して認証しているので、カスタムRoleProviderを作成しました。私のアプリケーションは、今まで私は私のweb.configファイルのappSettingsのセクションで定義されている役割の小さなセットでのみ関係している:私は、このアプローチの問題のカップルに遭遇してきたがasp.net MVCアプリケーションのweb.configでのロールの指定

<appSettings> 
    <add key="DirectorRole" value="Domain\Directors" /> 
    <add key="ManagementRole" value="Domain\Managers" /> 
    ... 
</appSettings> 

  1. 私はcontollerデータの注釈にこれらの設定を参照することはできません:[Authorize(Roles = ConfigurationManager.AppSettings["DirectorRole"])]それは文句を言わないコンパイルとしては、私は再びグループの名前を指定する必要があります:[Authorize(Roles = "Domain\\Directors")]
  2. 私のweb.configでは、私のロールプロバイダのgroupsToUseを指定し、同じロールセットの2つの別々のリストを維持するのではなく、既存のリストを参照したいと思います。

web.configでロールを定義するには、より良い/再利用可能な方法が必要なようです。誰かが正しい方向に私を向けることができますか?

答えて

26

は、私は、カスタム属性を使用して認可を好むだろう。このように。

あなたのコントローラ、使用の際に
public class MyAuthorizeAttribute : AuthorizeAttribute { 

    public MyAuthorizeAttribute(params string[] roleKeys) { 
     List<string> roles = new List<string>(roleKeys.Length); 

     //foreach(var roleKey in roleKeys) { 
      //roles.Add(ConfigurationManager.AppSettings["DirectorRole"]); 
     //} 
     var allRoles = (NameValueCollection)ConfigurationManager.GetSection("roles"); 
     foreach(var roleKey in roleKeys) { 
      roles.Add(allRoles[roleKey]); 
     } 

     this.Roles = string.Join(",", roles); 
    } 
} 

:あなたのweb.configファイルで

[MyAuthorize("DirectorRole")] 

<configSections> 
    <section 
     name="roles" 
     type="System.Configuration.NameValueFileSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 

    <roles> 
    <add key="DirectorRole" value="Domain\Directors" /> 
    <add key="ManagementRole" value="Domain\Managers" /> 
    </roles> 

私はこれがうまくあなたの最初の問題を解決することを願っています。もう少しtwikingすれば2番目の問題も解決します。

+0

セクションではなく、ロールのリストを配置するweb.configの特定の場所がありますか? – James

+0

@ james:特定の場所があるかどうかわかりません。しかし、確かにあなたの役割のための部屋を作ることができます。 @ここで[参照してください](http://stackoverflow.com/a/338310/887149) – Mohayemin

+0

@ジェームズ:私は答えを更新しました – Mohayemin

関連する問題