0

だから私はMVC4でウェブサイトを構築しています。私は一連のサービスを持っています。それらのサービスは、すべての呼び出しをラップし、xmlを指定されたオブジェクトに自動的に変更するdllに組み込まれています。そのため、xml を受信する代わりに、発信者は、ErrorCode、ErrorMessage、Token、および Payload を持つ CustomReturn オブジェクトを受信します。ペイロードは既に List などに変換されています。

現在、バックエンド サービスへの呼び出しの 90% を行うにはトークンが必要であり、呼び出しが成功すると新しいトークンが返されます。このトークンを管理するために、各呼び出しで渡される Cookie に格納されます。このようにして、ブラウザの JavaScript にトークンを管理させるのではなく、サーバーがトークンの管理を処理します。

そのため、この Cookie を探し、トークンを復号化し、カスタム HttpContext.Current.User 内に保存するコントローラーの上部にある属性を作成しました。

最後に、私のコントローラー関数は基本的に次のようになります。

    [HttpGet]
    public T MyFunction(string venue)
    {
        var asr = Services.GetSomething(Token, venue);
        SetAuthTicket(asr.Token);
        return asr.Payload;
    }

話が長くなって申し訳ありませんが、ここで私の質問の出番です:

私のページには、ユーザーの要求に応じてデータを取得して表示し、30 秒ごとに同じデータを自動更新する機能があります。

ユーザーが x 時間以内にリクエストを行っていないことを検出してログアウトする自動ログアウト機能をページ内に実装したいと考えています...

もともとトークンを検証することでこれを行うつもりでしたが、x 時間後に無効になります。

しかし、現在、自動更新はトークンをリセットする同じ呼び出しを行うため、トークンを有効に保ちます...

質問

サイトに自動ログアウト機能を実装するための最良のオプションは何ですか? トークンをリセットしない呼び出しの別のコピーを作成する必要がありますか? または、マウスの動きやクリックなどを検出し、そのようにログアウトするJavaScriptを作成する必要がありますか?

4

1 に答える 1

0

30 秒ごとのリクエストにフラグを立ててみませんか?ヘッドなどを追加して、リクエストがJavaScriptによって起動されたことを示し、タイマー/トークンを更新しませんか?.

ユーザーからのリクエストにはこのフラグがなく、タイマー/トークンを更新し続ける

例として、Ajax の「get」リクエストにパラメータを追加します"source=js"。サーバー側では、これが自動リクエストであることがわかります。Request["source"] == "js"

于 2013-05-25T04:11:18.297 に答える