0

ユーザーがある場所でログインし、他の場所にログインしようとすると、以前の場所から自動的にログアウトする機能を実装しようとしています。

GMAILのように..

誰かが私にコンセプトを与えることができれば、ユーザーのLoggedIn StatusをDbに保存する必要があると思うので、セッションは役に立たないようです。しかし、たとえば5分間アクティビティがない場合、DBでユーザーステータスを更新する方法がわかりません(非アクティブとdbでの更新をどのようにキャプチャしますか)。

誰かがガイドしてくれれば、私はこれに何時間も苦労しています。

ありがとう

4

2 に答える 2

0

Spring Security を使用している場合、この機能はすぐに使用できます。さもないと:

java.util.Map(ConcurrentMap が推奨されるため、同時に操作しても破損しない) を作成し、アプリケーション スコープ (ServletContext) に格納します。

次に、ログイン時に各ユーザーとそのセッションへの参照をマップに保存し、ユーザーが再度ログインした場合は、以前のセッション オブジェクトを取得して無効にします。

のインスタンスを実装しjavax.servlet.http.HttpSessionListenervoid sessionDestroyed(javax.servlet.http.HttpSessionEvent httpSessionEvent);メソッドで、指定されたセッションをマップから削除します。(このリスナーは、コンテナーによって自動的に行われるか、プログラムによって行われるかに関係なく、セッションの無効化で呼び出されます)。このリスナーを登録するだけでweb.xml、すべてが完了します。

ps アプリケーションを Web コンテナーのクラスターにデプロイする場合は、多少難しいことはわかっていますが、サーバーが 1 つしかない場合は問題ありません。psセッション情報をDBに保存することはお勧めしません。

于 2013-10-24T22:51:53.723 に答える