1

別のサイトのサブディレクトリにアプリケーションとしてセットアップされた asp.net (動的データ) Web サイトがあります。このサイトには、最上位サイトとは異なるセキュリティ設定が必要です。何かのようなもの:

    <authorization>
       <allow roles="ADMIN"/>
       <deny users="*"/>
    </authorization>

これらの設定は、サブ サイトでは無視されます。ただし、トップ レベル サイトで動作しますが、トップ レベル サイトに設定してもサブサイトには継承されず、自由にアクセスできます。これらの設定が無視される原因は何ですか? 私は追加しようとしました:

<location path="." inheritInChildApplications="false">  

最上位の web.config に移動し、サブ サイトで上記の承認規則を設定して、すべてのユーザーを拒否しようとしました。サイトにアクセスすると、http://mysite/mybrokensiteのようになります。

Windows 認証を使用しています。

4

3 に答える 3

2

肝心なのはこれだと思う

別のサイトのサブディレクトリにアプリケーションとして設定された Web サイト

IIS 内の別のアプリケーションである場合は、独自の web.config ファイルが必要であり、そこからセキュリティ設定を設定できます。したがって、メイン サイト用に 1 つ、サブサイト用に 1 つの web.config が作成されます。実際には、それらは 2 つのアプリケーションです。

それがあなたのウェブサイトの下の単なるサブフォルダーである場合、これは当てはまりません. IIS での設定方法によって異なります。別のアプリの場合、アイコンはワールド/キャベツ タイプのアイコンになります。それがサブフォルダーの場合、アイコンは...フォルダーになります。

于 2009-03-27T22:48:26.980 に答える
0

ティムの答えを詳しく説明するには、IISで仮想ディレクトリとして設定されていることを確認してください。IIS管理、ディレクトリ(またはホームディレクトリ)タブで、そのディレクトリのプロパティページを確認します。アプリケーションラベルがグレー表示されている場合は、[作成]ボタンをクリックします。これで、IISはそのディレクトリからweb.configをロードします。

于 2009-03-27T23:19:41.163 に答える
0

多くの人がサブフォルダー認証に関して同じ状況に直面していたので、要約を入力しました。

サブフォルダの承認

  • ASP.NET は、1 つのアプリケーションに対して 1 つの認証モードのみを持つことができます。
  • 異なるアプリケーション間でリソースを共有することはできません。

シナリオ

ホームページでログイン ダイアログが表示されないようにします。ユーザーがログインなしで通過できるようにする必要があります。ただし、同じアプリケーションの別のフォルダーで、おそらく別のページで、ユーザー ネットワーク ログイン ID を使用して、データベース テーブルに対するユーザー権限をチェックする必要があります。デフォルトでは、IE はホスト名のみを持つすべての Web サイトをイントラネットとして扱います。デフォルトのイントラネット設定では、Windows 認証が使用されている場合、ログイン ダイアログは表示されず、ユーザー ログインとパスワードがアプリケーションに渡されません。ただし、注意が必要なのは、アプリケーションに実際のドメインがある場合、IE はそれをインターネット サイトと見なし、Windows 認証が使用されている場合はログインとパスワードを要求することです。


Windows 認証を使用してインターネット サイトのログイン ダイアログを表示しないようにする唯一の方法は、IIS で匿名認証をオンにすることです。ただし、匿名が Windows 認証よりも優先されるため、ログイン情報をキャプチャする機能が失われます。良いニュースは、その問題を解決する方法があることです。アプリケーション サブフォルダーがログイン情報を取得する必要がある場合は、web.config の Location 要素で親認証を上書きする必要があります。

1 IIS で、認証を次のように構成します。

  1. 匿名認証を有効にし、
  2. Windows 認証を有効にする

2 Web.Config に以下を追加します。

<authentication mode="Windows" />
  <authorization>
   <allow users="*" />
</authorization>

<!-- secured is the relative subfolder name. deny anonymous user, so only the authenticated login will pass through -->
<location path="secured" allowOverride="true">
  <system.web>
    <authorization>        
        <deny users="?" />
    </authorization>
  </system.web>
</location>
于 2011-03-23T03:24:57.830 に答える