私は、セッション変数を使用してログイン状態を保存する古典的なaspWebサイトを持っています。userid、isloggedinなど。ログアウトすると、セッション変数がリセットされ、Session.Abandon()が呼び出された後、ログインページにリダイレクトされます。IE7では、ログアウト後に、以前にアクセスしたURLを入力して、ログアウト前の状態のキャッシュバージョンのように見えるものを確認できることに気付きました。ctl-f5を押すと、サーバーから再度リロードされ、ログインページにリダイレクトされます。これは、URLがctl-f5なしで入力された場合でも発生したい動作です。誰かがこの動作を取得する方法を知っていますか?
4 に答える
そもそもページがキャッシュされないように、no-cacheヘッダーを設定します。見る:
mkoryakの答え(キャッシュなしのヘッダーを使用)が最適だと思います。ユーザーがログインしているときにのみ特定のページを表示したい場合は、ページをキャッシュしないようにブラウザに指示するのが最善の方法です。さらに、Cookieの調整やJavaScriptの使用などのスキームは、クライアントのログイン状態を決定するだけで、車輪の再発明を行っています。
キャッシュを活用したいが、ページが常に更新されていないResponse.Expires
場合は、適切と思われる値にヘッダーを設定することをお勧めします(これは数分で測定されます)。
以前にも同様の問題が発生しましたが、そのページのリンクをクリックすると、再度ログインするように求められます。
sessionID=""またはsessionID="XYZ"のいずれかをリセットして、ログアウト時にコードが無視するXYZを作成することができます。
キャッシュなしヘッダーを設定してみることもできます。
キャッシュなしを送信することもできますが、必要なものを取得するためだけにパフォーマンスが低下することはありません。私はリアムスの提案を好み、そのページから行うすべてのことでログインする必要があります。そうすれば、誰もすべきでないことを行うことができなくなります。それが電子メールシステムであるか類似している場合、人々はキャッシュされている他の人々の電子メールを「見ることができた」としたらどうでしょう、その場合はそうです、機密情報をキャッシュしないことが道です(たとえばデフォルトではHTTPSページをキャッシュすることはできません) )。
また、「ログインした」Cookieの存在を確認できるJavaScriptをヘッドに含めることもできます。これは、ページをロードするたびに実行されます。Cookieが存在しない場合、JSはログインページにリダイレクトする可能性があります。100%ばかげた証拠ではありませんが、十分です。ログアウトページでこのCookieをクリアする必要があり、ログインページで設定します。