.NET TIPS

[ASP.NET]構成ファイルの適用範囲を限定するには?

山田 祥寛
2004/03/26

 構成ファイルweb.configの設定は、デフォルトで配置されたフォルダとその配下のサブフォルダに対して適用される。しかし、項目によっては、それらのフォルダ全体ではなく、限定されたページにのみ設定を適用したいというケースも少なくない。

 例えば、別稿「TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには?」で紹介したフォーム認証も、フォルダ全体に対してではなく、特定のページに対してのみ認証を有効にしたいというケースがあるだろう。また、アクセス可能なユーザーをページ単位に分岐したいというケースもあるだろう。そのような場合に、もちろん、対象ユーザーごとにフォルダを分割してもよいが、対象ユーザーが変更となった場合にファイル(URL)を変更しなければならないというのは、あまり理想的な状況ではない。

 そこで登場するのが、<location>要素である。別稿「TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには?」で紹介した「/auth」フォルダ内のweb.configを以下のように書き換えてみてほしい。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <location path="sample01.aspx">
    <system.web>
      <authorization>
        <allow users="yyamada,nkakeya" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="sample02.aspx">
    <system.web>
      <authorization>
        <allow users="yyamada" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>
ページ単位の認証を設定するために<location>要素を追加した構成ファイル(web.config)

 以上の設定によって、ページsample01.aspxはユーザーyyamadaおよびnkakeyaに対してのみ、ページsample02.aspxはユーザーnkakeyaに対してのみ、それぞれアクセスを認めることになる。もしもこの2つのページにアクセス可能なユーザーnkakeyaでsample01.aspxに対してアクセスしたとしたら、sample02.aspxにアクセスする際に再度認証を求められる。また、「/auth」フォルダ内にこの2つ以外のページが存在したとしても、そのページでのフォーム認証は有効にはならない。

 もちろん、<location>要素の設定が有効であるのは、このような認証の局面だけではない。例えば、ファイル・アップロードの機能を提供するページupload.aspxがあったとする。このページに限定して、POSTデータの容量と実行タイムアウト時間の制限を緩和したいという場合にも、<location>要素を使って以下のように記述することで実現できる。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <location path="upload.aspx">
    <system.web>
      <!--POSTデータの最大値を10Mbytes、実行タイムアウトを2分に設定-->
      <httpRuntime maxRequestLength="10000"
        executionTimeout="120" />
    </system.web>
  </location>
</configuration>
POSTデータの容量と実行タイムアウト時間の制限を緩和するために<location>要素を追加した構成ファイル(web.config)

 もっとも、<location>要素を多用することは、構成ファイル自体の保守性を低下させる原因ともなり得るので、極力、フォルダ単位での設定を心掛けるようにするのが望ましいだろう。しかし、特に制限を「緩める」ような設定については、必要最小限の範囲に限定するのが好ましいのも事実だ。保守性とアプリケーション全体への影響などをてんびんにかけつつ、うまく利用していただきたい。End of Article

カテゴリ:Webフォーム 処理対象:構成ファイル
使用キーワード:<location>要素
関連TIPS:[ASP.NET]構成ファイルのみでフォーム認証を実現するには?
 
この記事と関連性の高い別の.NET TIPS
[ASP.NET]構成ファイルのみでフォーム認証を実現するには?
[ASP.NET]フォーム認証のユーザー管理をXMLファイルで行うには?
[ASP.NET]フォーム認証のユーザー管理をデータベース・サーバで行うには?
[ASP.NET]ページ単位にユーザーのアクセス可否を制御するには?
[ASP.NET]途中ページへの直接アクセスを防ぐには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間