2

「loginStatus」フィールドを持つテーブルがあります。これで、ユーザーがログインするたびに値が 1 に設定され、ログアウトをクリックすると値が 0 に設定されます。ユーザーがログインしようとすると、そのフィールドの値がチェックされます。0 の場合、ユーザーは1 の場合、ユーザーはログインできません。何らかの理由でブラウザが閉じられると、ユーザーはそのユーザー ID でログインできなくなります。そのフィールドの値はまだ 1 であるため (ログアウト ボタンをクリックしていないため、変更されていません)。ユーザーがブラウザを閉じない限り、アプリケーションは正常に動作しています。

この問題は別の方法で解決できることは承知していますが、この方法で解決するよう求められています。問題は、私がJava EEのプロではないため、説明に関する複数のヘルプがまさに私が探しているものであることです。

また、次のような解決策があります。データベーストリガーを作成してloginStatus値を0に変更します。これは、ユーザーがログインすると、たとえば15分後にトリガーされます。今、そのようなトリガーを作成する方法もわかりません特定の時間後にトリガーされます。

4

2 に答える 2

2

この要件が強制されている場合は、ジョブを実行しなくても、アカウントを自動的に期限切れにすることができます。

単純な「オン/オフ」フラグの代わりに、現在の日付/時刻に設定されたテーブルに日付/タイムスタンプを設定します。ユーザーがサーバーにリクエストを送信するたびに、この列を現在の時刻に更新します。

2 番目のセッションがログインを試みる場合、そのセッションはテーブルの日付/タイムスタンプをチェックする必要があり、15 分以上前であればログインは許可されます。それ以外の場合はブロックされます。

于 2012-04-13T01:49:41.563 に答える