2

私のマスター ページの Page_Load イベントには、次のコードがあります。

if(!Request.IsAuthenticated)
{
   FormsAuthentication.RedirectToLoginPage();
} else 
{
   // Do something. Note: Any work here gets performed when request is authenticated.
}

ただし、認証されていないときに (マスターを使用する) コンテンツ ページを読み込むと、ログイン ページにリダイレクトされません。目的の動作を得るには、コンテンツ ページの Page_Load イベントにも上記のチェックを追加する必要があります。

大きな問題ではありませんが、すべてのコンテンツ ページで上記のチェックを行うのは面倒です。

興味がありますが、リクエストが認証されていないときにマスターページがログインページにリダイレクトされない理由は何ですか?

4

5 に答える 5

3

ログインページにリダイレクトする FormsAuthentication だけが必要な場合、ユーザーがログインしていないときに、構成ファイルを使用してこれを実行しないのはなぜですか?

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

これにより、すべての「匿名」ユーザーが FormAuth 用に構成されたログイン ページに自動的に送信されます。

于 2012-12-05T16:27:44.057 に答える
2

Master page のライフサイクルを確認する必要があると思います。これにより、すべてがどのように機能するかを理解できます。

最初に個々の.aspxページのPage_Load()メソッドが実行され、そのメソッドの実行が終了した後、マスター ページのPage_Load()メソッドが実行されます。

関連する質問: ASP.NET WebForm の「ページ ライフサイクル」とは何ですか?

于 2012-12-05T16:25:45.920 に答える
2

これをデバッグしようとしましたか - マスターページの Page_Load は確実に実行されていますか? AutoEventWireUp が false または同様に設定されている可能性があります...

于 2012-12-05T16:21:37.147 に答える
1

複数の場所で同じ機能が必要な場合は、ASP.NETユーザーコントロールを使用できます。

コードをに入れ、usercontrolこのコードを実行する必要があるページにユーザーコントロールを追加します

于 2012-12-05T16:15:03.440 に答える