私は GWT-ext アプリケーションに取り組んでいます。このアプリケーションでは、クライアント側のセッションを管理しました。このために、以下のコードを書きます。
セッションを管理するには: import com.google.gwt.user.client.Timer;
public class ClientTimers {
private static final Timer SESSION_MAY_HAVE_EXPIRED_TIMER = new Timer() {
@Override
public void run() {
// Warn the user, that the session may have expired.
// You could then show a login dialog, etc...
}
};
public static void renewSessionTimer() {
// First cancel the previous timer
SESSION_MAY_HAVE_EXPIRED_TIMER.cancel();
// Schedule again in 5 minutes (maybe make that configurable?)
// Actually, let's subtract 10 seconds from that, because our timer
// won't be synchronized perfectly with the server's timer.
SESSION_MAY_HAVE_EXPIRED_TIMER.schedule(5 * 60 * 1000 - 10000);
}
}
ユーザー アクティビティを取得するには:
Ext.get("pagePanel").addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
//MessageBox.alert("On Mouse Click");
});
Ext.get("pagePanel").addListener("keydown", new EventCallback() {
@Override
public void execute(EventObject e) { //
//MessageBox.alert("On Key Press Click");
}
});
このコードは正常に動作していますが、私の問題: このコードは、タイムアウトが発生すると自動的にログアウトします。私のコードでは、クリックまたはキーを押したときにログアウトする必要があります。ケースは次のようなものです: ユーザーがログインしていて、ログアウトする時間が 5 分である場合、ユーザーは上記のコードに従って、画面上で現在よりも何も操作を行わないで、5 分が完了すると自動的にログアウトします。
ここで私の要件は、ユーザーがログインして 5 分間何もしない場合です。自動的にログアウトするべきではありません。5 分間の完了時にログアウトする代わりに、ユーザーが 6 分間クリックまたはキーを押した場合その後、ログアウト プロセスを実行する必要があります。
基本的に、タイマーが指定された時間を超えたときのログアウト プロセスは、自動的にではなく、ユーザー アクティビティで実行する必要があります。