0

私は ASP.NET Web フォーム アプリケーションに取り組んでおりAccount、ルートにフォルダーが呼び出されています。Login.aspx主に、ChangePassword.aspx、 の3 つの ASPX ページが含まれていますForgotPassword.aspx

カスタム メンバーシップ プロバイダーを使用してフォーム認証を構成しました。

web.config

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" slidingExpiration="true" timeout="2880" path="/" protection="All" />
</authentication>

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear/>

    <add name="CustomMembershipProvider" 
         type="App_Code.CustomMembershipProvider, Portal.Web" 
         connectionStringName="PortalConnectionString"
         applicationName="/" />
  </providers>
</membership>

リダイレクト先Account以外のフォルダー内のページにアクセスしようとすると、現在、以下のように他の 2 つのページのフォーム認証を回避しています。Login.aspxLogin.aspx

  <location path="Account/ChangePassword.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

  <location path="Account/ForgotPassword.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

上記のように個々のページを指定する代わりに、それらを結合できますか? 属性にフォルダ名を指定しようとしAccountましたが、うまくいきません。path

次のことは、ルートで呼び出さDashboard.aspxれた別のページがあり、それに直接アクセスするたびに、そのページにリダイレクトされると思っていましたAccount/Login.aspxが、それが起こっていないのはなぜですか?

4

1 に答える 1

1

フォルダーをパス属性として指定することは間違いありません - 末尾の / を削除してみてください。

 <location path="account">
    <system.web>
      <authorization>
        <deny users="?" />
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

ただし、アカウント フォルダー内の他のページを保護する必要があるため、Login.aspx や ResetPassword.aspx など、匿名ユーザー専用のページをオーバーライドする必要があります。複数のファイル エントリを結合することはできません。

Dashboard.aspx がリダイレクトする理由については、ここに投稿していない構成に別の原因があるはずです。

于 2012-12-11T12:35:37.263 に答える