0

私はasp.netのプロジェクトに取り組んでおり、いくつかのファイルをtempというディレクトリに保存しています。そのフォルダーとそのコンテンツへのアクセスを、ログに記録されているユーザーのみに許可したいのですが、それ以外の場合は、アクセスが拒否されたと表示されます。

私が試してみました

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Default.aspx" defaultUrl="Default.aspx" ></forms>
  </authentication>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

  <location path="temp">
   <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
   </system.web>
 </location>

しかし、それは機能していません。

私は何を間違っていますか?正しいアプローチは何ですか?

4

1 に答える 1

2

まず、 global の変更を忘れてくださいweb.config。その必要はありません。web.config上記のフォルダーに補助を作成して、次のものを配置するだけです。

<?xml version="1.0"?>
<configuration>
 <system.web>
  <authorization>
    <deny users="?"/>
    <allow users="*"/>
  </authorization>
 </system.web>
</configuration>

中身。

第 2 に、これは ASP.NET パイプラインを通過しない静的ファイルでは機能しません。開発サーバーはすべてのファイルへの要求を処理し、アプリケーションを IIS に展開する場合にのみ問題が発生するため、これは注意が必要です。

追加する必要があります

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

ASP.NET パイプラインを使用して、考えられるすべての要求 (静的リソースへの要求を含む) を処理するよう IIS に指示します。ただし、サーバーの速度が少し低下する可能性があるため、これには欠点があります。

于 2012-12-21T08:45:10.547 に答える