2

ページの読み込みとは、2 語の文として、ページが読み込まれたとき、すべての要素が読み込まれたときを意味します。

というページAsk.aspxがあり、このページはサインインしたユーザーにのみ許可されるため、技術的には次のように記述します。

if(Session["id"]==null)
    Response.Redirect("Login.aspx");

これは、ページがロードされた後にセッションをテストしていることを意味します。理論的には、間違っているように聞こえると思います。もちろん、気付かないでしょう。高速になります。ページにアクセスしようとすると、 Login.aspx にリダイレクトされましたが、ページ読み込みメソッドでセッションをテストするのは正しいですか?

4

2 に答える 2

3

Page_Loadはページのライフサイクルの一部です。クライアントがページをロードするときではなく、サーバーがページをロードするときに呼び出されます...

したがって、これセッション変数を確認する正しい場所です...

あなたは実際に言っています:ページをクライアントに戻す前に、このセッションのプロパティが設定されているかどうかを確認してくださいID...そうでない場合は、クライアントに Login.aspx ページにリダイレクトするように指示してください...

これはこれを行う正しい方法です...

Server.Transferについても読むことをお勧めします。との違いは、サーバー自体が別のページに「リダイレクト」し、新しいページの結果をクライアントに出力することです (クライアントはそれを認識しません) Response.RedirectServer.Transfer

于 2012-12-23T13:49:24.733 に答える
1

特定のページへのアクセスを制限しようとしている場合は、フォーム認証を使用することをお勧めします。

http://support.microsoft.com/kb/301240

セットアップは非常に簡単で、要求が asp.net パイプラインに渡される前に資格情報を確認できます。あなたがしていることでは、リクエストが拒否される前に、ページはライフサイクル全体を通過します(コントロールはレンダリングされ、データにバインドされ、データベースへのアクセス、Webサービスへの呼び出しなど)。状況によっては、これはコストがかかり、うまくスケーリングできない場合があります。

編集:AcquireRequestState global.asaxのイベントにフックすることもできます。これにより、ページのライフサイクル全体も節約されます。

于 2012-12-23T13:52:54.923 に答える