2009-07-29 31 views
4

私はセッション変数を使用してログイン状態を保存する古典的なaspウェブサイトを持っています。ユーザーID、ログ記録などのログアウトを行います。ログアウトすると、セッション変数がリセットされ、Session.Abandon()が呼び出され、その後にログインページにリダイレクトされます。 IE7では、ログアウト後、以前に訪問したURLを入力して、ログアウト前の状態のキャッシュされたバージョンが表示されるのを確認できます。 ctl-f5を押すと、サーバーから再び読み込まれ、ログインページにリダイレクトされます。これは、たとえURLがctl-f5なしで入力したとしても発生したい動作です。誰もこの振る舞いを得る方法を知っていますか?IE7クラシックASPキャッシュ

答えて

1

私は前に同様の問題がありましたが、私はそのページ上のリンクをクリックした時はいつでも、再度ログインするために私に尋ねています

あなたはセッションIDをリセットどちらか試みることができます。 = ""またはsessionID = "XYZ"とし、ログアウト時にコードが無視するものをXYZにします。

ノーキャッシュヘッダーを設定することもできます。

0

あなたはno-cacheを送信することができますが、それはあなたが望むものを得るためにパフォーマンスを低下させます。私はLiamsの提案を好んでおり、あなたがそのページから行うすべてのことがログインする必要があることを保証します。しかし、電子メールシステムでも同様の場合、人々はキャッシュされている他の人々の電子メールを閲覧することができます(そのような場合は「はい」、機密情報をキャッシュしないことが最善の方法です(例えばデフォルトではHTTPSページをキャッシュできません) )。

「ログインした」クッキーの存在を確認できるjavascriptを頭に付けることもできます。これは、ページが読み込まれるたびに実行されます。クッキーが存在しない場合、JSはログインページにリダイレクトできます。 100%の偽りはないが十分に良い。あなたはログアウトページでこのクッキーをクリアする必要があり、ログインページでそれを設定します。

2

私はmkoryakの答え(キャッシュヘッダーを使用しないでください)が最適だと思います。ユーザーがログインしているときにのみ特定のページが表示されるようにするには、ブラウザにページをキャッシュしないように指示するのが最善の方法です。さらに、クッキーを微調整し、javascriptを使用してクライアント上のログイン状態を決定するなどのスキームは、単にホイールを再発明するだけです。

キャッシュを活用して、ページが常に更新されているものではない場合は、Response.Expiresヘッダーを適切と思われる値に設定することをお勧めします。