1

現在、認証されていないすべてのユーザーが私の Web サイトのコンテンツを閲覧できないようにするためのログイン システムを導入しています。ログインできることを確認できました。しかし、私が今直面している問題は、web.config ファイルにあります。検証されていないユーザーがメイン ページ (つまり、www.mysite.com) を表示するのをブロックできます。これにより、index.php が読み込まれます。ただし、ユーザーはログインの目的に反して、ログインせずに www.mysite.com/index.php にアクセスできます。

私の web.config は、メイン ページと、ルートにある .aspx ファイルのみを処理します。以下は私のweb.configコードです。私はしばらくの間解決策を探していましたが、web.config をサイト全体で機能させる方法が見つかりませんでした。また、ルートにあります(私のサイトではワードプレスを使用しています)。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>

    <compilation defaultLanguage="c#" debug="false" />
    <customErrors mode="Off" /> 
    <authentication mode="Forms"> 
        <forms
            name=".myCookie"
            loginUrl="http://www.mysite.com"
            domain="mysite.com"
            protection="All"
            timeout="120"
            path="/"
            requireSSL="false"
            slidingExpiration="true"
        />
    </authentication>

 <authorization>
          <allow roles="AA,BB" />
          <deny users="*" />
      </authorization>

    <machineKey
        validationKey="xxxxxxx"
        decryptionKey="xxxxxxx"
        validation="SHA1"
    />
    <sessionState mode="Off" /> 
</system.web>

<system.webServer>
<defaultDocument>
        <files>
            <add value="index.php" />
        </files>
    </defaultDocument>
<rewrite>
  <rules>
    <rule name="wordpress" patternSyntax="Wildcard">
        <match url="*" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="index.php" />
    </rule>
</rules>
 </rewrite>
 </system.webServer>

</configuration>

私はこれにかなりの時間を費やしてきたので、助けていただければ幸いです。これは簡単な解決策であるべきだと思います。また、IIS 7 を実行しています。

私の質問を要約すると、ルート URL と .aspx ファイルだけでなく、すべての種類のファイル (php、.txt など) へのアクセスをブロックする web.config ファイルが必要です。

ありがとうございました

4

2 に答える 2

2

だから私がコメントしたように、system.webはiis6用で、system.webServerは私が実行していたiis7に使用されていることがわかりました。system.web の承認規則は正しかったため、.net ファイルは意図したとおりにブロックされましたが、iis7 パイプラインの統合により、他のファイル拡張子は影響を受けませんでした。これに対する解決策は、http: //blogs.msdn.com/b/rakkimk/archive/2007/11/28/iis7-making-forms-authentication-to-work-for-all-the-requestsから見つけました 。 aspx?リダイレクト=true

行 preCondition="" に関係しています

于 2013-05-15T21:15:33.353 に答える