4

プロジェクトのコンテキスト

クライアントは、サイトのユーザー (ログインして個人情報を表示できる場合) がブラウザーのナビゲーション ボタンを使用してナビゲートしようとすると、強制的にログアウトする必要があります。

私の研究

SO を検索すると、人々が抱えている問題のほとんどは、ログアウト時にブラウザーの戻るボタンを押すことを「停止」することであることが示されているようです。違いは、ユーザーが履歴をさかのぼってナビゲートするのを「停止」する必要があることです (また、ユーザーが最初に戻ることができない場合、ユーザーが履歴をどのように進めることができるかわかりませんが)。ログインしているときでも、提供されたナビゲーションを使用することが義務付けられています。

私が考えている解決策

ユーザーが戻るボタンを押してからログアウトしたときにブラウザのイベントをキャプチャすることを考えています。ただし、ここで説明したように、サーバー側のコードではなく、Javascript を使用してのみ「実行」できるようです。このアプローチに対する私の不満は、ユーザーがブラウザーで Javascript を無効にするだけで回避できることです。

私の質問

だから私の質問は - サーバー側でブラウザイベントをキャプチャして、そこからログアウトできる方法はありますか? そうでない場合、私の目的を達成するための代替手段は何ですか?

4

7 に答える 7

7

あなたの最良の選択肢は、セッションを追跡することだと思います。

リクエストがサーバーによって処理されたときのタイムスタンプをクライアントに送信させるか、さらに簡単に: ユーザー依存のカウンター (毎回クライアントに送信する) と、サーバー側で最後に送信されたタイムスタンプ/カウンターを追跡します。 .

ユーザーが戻るボタンをクリックすると、最新のタイムスタンプ/カウンターではなく古いタイムスタンプ/カウンターが送信され、サーバー側からログアウトできます。

これでうまくいくはずです。

トリックが確実に行われ、JavaScript に依存しないようにするために、この値を非表示のパラメーターに配置するか、非表示のフィールド フォームとして配置すると、ユーザーには表示されませんが、常に送信されます。あなたのサーバーに。

これが役立つことを願っています!

于 2013-01-28T11:33:40.610 に答える
1

私がしたことは、1 つのページ、1 つの HTML ドキュメントを作成し、AJAX を使用してサイト全体をナビゲートすることでした。ユーザーが戻るボタンを押すと、ログイン ページであるインデックス ページに移動します。ログインするには、サーバー側でのみリダイレクトする AJAX を使用します。唯一の問題は、ユーザーが進むボタンを押したときですが、良いことは JS なしのナビゲーションです。

于 2013-01-30T08:54:35.647 に答える
1

要件がブラウザのナビゲーション ボタンをトラップしてログアウトすることである場合、より簡単な方法は、これらのナビゲーション ボタンを最初から表示しないことです。ユーザーが使用できない場合、または前後にクリックできない場合の用途は何ですか。

webapp からツールバー、メニュー バーのない新しいブラウザーを開きます。ユーザーがウィンドウを閉じたら、イベントをトラップしてセッションをログアウトします。このように - ソリューションはシンプルなままです。

私の2c

于 2013-01-30T11:48:19.837 に答える
0

私が正しければ、あなたはブラウザのNO-Cacheについて話している。これらすべてを次のように設定できます。

    response.setHeader("pragma", "no-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Cache-Control", "no-store");
    response.addDateHeader("Expires", -1);
    response.setDateHeader("max-age", 0);
    response.setIntHeader ("Expires", -1);
    prevents caching at the proxy server
    response.addHeader("cache-Control", "private");

次に、すべてのページでセッションをチェックするフィルターを定義できます。ユーザーがログインしたら、セッションで属性を設定し、ログアウト時にそれを削除します。

于 2013-01-30T10:50:00.697 に答える
0

クライアント側にあり、クライアント側で実行されるものは常にクライアントによってバイパスされる可能性があるため、javascript に依存することはお勧めできません。

代わりに、セッション タイムアウトを使用する必要があります。

于 2013-01-25T14:46:30.980 に答える
0

申し訳ありませんが、ボタン自体を取得することはできません。

これはセキュリティ上の問題であるため、(javascript を使用しない) 解決策は次のようになります。

  • エンコードされていないページから、またはエンコードされていないページへのナビゲーションについて警告するエンコードされたページを使用する。相互認証でさえ、ニーズに合うかもしれません。

認証

去る

于 2013-01-25T15:49:18.257 に答える
0

私があなたの質問を正しく理解していれば:

ユーザーがサーバーにリクエストを送信することを避けることはできません。ユーザーは、イントラネットの乗組員向けに (オープンソースのブラウザー プロジェクトから) カスタム変更されたバージョンを出荷する場合を除き、自分のブラウザーを完全に制御できます。

JavaScript がなければ、必要なナビゲーション ボタンをクリックしたときに GET を介して特定のパラメーターを送信することしかできません。パラメータが存在する場合、次/前のページの表示を許可します。それ以外の場合、ユーザーはログアウトされます。

明らかに、ユーザーはブラウザーの開発者ツールを使用してそれをバイパスできます。しかし、このレベルでユーザー UI の動作を完全に制御する方法はありません。

于 2013-01-28T23:50:05.227 に答える