2011-01-21 27 views
1

私は古典的なASPを開発したWebアプリケーションで作業しています。それは基本的に次のアクション古典的なASPログアウトプロセス

  1. Session.Abandon()は、ユーザーが再度ログインすることができIndex.asp、へ
  2. リダイレクトを行いトップメニューのボタンをログアウトしています。

ユーザーをログオフすると、index.aspに戻ります。しかし、ユーザーがブラウザのボタンをクリックすると、前のページに移動します。私はこれが起こることを望んでいない。既にログオフしているというメッセージが表示されます。次の手順を実行しました。

1.各ページの先頭にResponse.Expires=-1Response.CacheControl="no-cache"を追加してください。 2.各ページで、セッションオブジェクトが空でないことを確認しています。空の場合は、既にログオフされており、再度ログインする必要があるというメッセージが表示されます。

ユーザーがログオフ後にボタンをクリックすると、ログアウトしたメッセージが表示されなくなり、IE8で「Webページの有効期限が切れました」というメッセージが表示されます。ログイン中にユーザーが一部のページで戻るボタンをクリックしたときと同じ動作をします。

どのようにすればよいでしょうか。

ありがとうございました。

+0

"Webページの有効期限が切れています"と同様のメッセージは、ユーザーがPOSTの結果であったページに戻り、ページ状態が既に変更されている、または元の要求を再ポストすると問題が発生する可能性があることをブラウザが想定していることを示します。 Webアプリケーションで –

答えて

1

ユーザーの押し戻しを停止することはできません。この問題を回避する一般的なシナリオは、出力が表示されず代わりに新しい場所にリダイレクトされる(結果が表示される)サーバーページをターゲットとするPOSTです。

1

時々役立つ追加の非キャッシュの宣言があります。

Response.Expires = 0 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "no-cache" 

が、私はそれを無視して、いくつかのブラウザを引き起こすのではなくすることができますいくつかの前に時間設定すると-1に有効期限が切れていること(リンクを見つけるので、できないことを)読みましたがそれはすぐに期限切れになります。

これらの余分なキャッシュコントロールを追加しても、一部のブラウザでは一部のことをキャッシュできないことはありません。 FFはユーザーが強制的にキャッシュをリロードすることをかなり頻繁に無視するため、ブラウザー内にある程度の手間がかかります。

「Webページの有効期限が切れました」というメッセージは、ブラウザがPOSTデータの再送信をやめようとした結果です(最後に行ったことが重複している可能性があります)。これを回避し、フォーム上のその他の一般的なUIの問題を解決するには、同じページにPOSTしてから、アクションが完了したときに同じページにresponse.redirectを使用するか、 URLがエンコードされたメッセージで「すべて正常終了」と表示されます。これにより、ほとんどのブラウザがリダイレクトされたページを履歴に適切に保存しないため、ユーザーが最新の状態に戻ることができます。

関連する問題