2011-01-21 8 views
0

ASP.NETでログインコントロールの組み込み機能を使用せずに、自分のWebサイトでログイン/ログアウト機能を実装しようとしています。ログインするユーザーが必要な一部のページでは、私は、Page_Loadの戻る/進むボタンを押すと制限付きページを表示しないようにする

if (Session["cod"] == null && Session["admin"] == null) 
     { 
      Response.Redirect("You need to Login.aspx"); 
     } 
     if (Session["cod"] != null || Session["admin"] != null) 
     { 
      LinkButton1.Text = "Logout"; 
     } 

     if (Page.IsPostBack == false) 
     { 
      log_bind(); 
      grid1_bind(); 
      grid2_bind(); 
     } 

でこれを書かれている。しかし、私はこれをテストしている間、私は気づいた私は、ブラウザの戻る/進むボタンを押したときに、これらのページログインしなくても閲覧可能です。これをどうやって防ぐのですか?

答えて

1

これは、ログインコントロールとは関係ありませんが、他の人がそうであるように、ページのキャッシュを示します。

ブラウザにページをキャッシュできないことを知らせるのは難しいことです。 この記事を見て、その解決策: Disable browser cache for entire ASP.NET website

+0

私はキャッシュを無効にする必要があると思うコード全体のwebisteです。私はそれをpage_loadに入れるべきだと思うページのほうが欲しいだけです。 – Cipher

+0

ユーザが一度サインアウトすればこのキャッシュを削除する必要があります。それはどうやってできますか? – Cipher

0

ASP.NETのログインコントロールを使用していなくても、プリンシパル/アイデンティティクラスを使用して、ユーザーが認証済みかどうかを確認する必要があります。それは確かに最も安全な方法です。

0

これを行うには信頼できる方法がありません。ページが表示されると、そのページはユーザーのコンピュータに保存されます。彼らが戻るボタンを押すと、キャッシュされたバージョンを見ているので、なぜこれが問題になるのか分かりません。

最新のコンテンツを取得するためにページをリフレッシュできない限り、既にアクセスしたページを見ることができたらどうなりますか?

+0

私はいくつかのサイトでそれを見ていると思ったが、それらはbiggiesであり、私が何かを作るにはないです、が、彼らはメッセージ等を、「このページの有効期限が切れた」と表示しますその銀行の種類のWebアプリケーション – Cipher

0

は、あなたがいる場合

で全体の機能をラップしてみました(!IsPostBackプロパティ) {

}

+0

試してみましたが、まだそれは – Cipher

0

ブラウザは、単にあなたのページのキャッシュされたバージョンを示すことがあり、添付しようデバッガをページのロードイベントに設定して確認します。

  1. セッション状態の値。ログアウトしたユーザーとの一貫性があるかどうか。
  2. セッションの値がログインしているユーザーと一致している場合は、セッションのクリアロジックを確認する必要があります。

ただし、カスタムロジックに基づいてログインやログアウトなどの機能を実行するには、asp.netコントロールまたはsystem.web.security.FormsAuthenticationクラスを使用することをお勧めします。

関連する問題