2012-12-05 68 views
1

我已實施春季安全,我可以得到所有的登錄用戶通過使用下面的代碼,並在網上標記如何結識新用戶在使用彈簧安全

for (Object user: sessionRegistry.getAllPrincipals()) { 
      User onlineUser = (User) user; 
      onlineUsersIds.add(onlineUser.getId()); 
     } 

是顯示它們記錄這可能知道用戶剛剛登錄,以便我可以更新在線用戶列表,或者我必須每5或10分鐘檢查一次sessionRegistry,然後每5或10分鐘更新一次用戶列表。

請讓我知道你是否需要任何其他細節。

回答

1

我這樣做:javax.servlet.http.HttpSessionBindingListener http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSessionBindingListener.html

這將是一個 '每個會話' 的基礎上。

所以每次有人通過身份驗證時,spring安全都會在會話中放入某些值。

你要做的是用'valueBound'和'valueUnbound'方法檢查該會話屬性。 這些方法會得到一個應用程序作用域的「設置」或同步的「設置」他們的過程相應

每次您呈現一個頁面,你剛纔讀從應用範圍的設定

+0

蒂蒂您好,感謝您的答覆。您能否爲此展示一些示例我試圖實現上述接口,但不知道如何調用valueBound和ValueUnound方法以及在這些方法內部傳遞什麼參數。 – user965884

+0

嗨,你不必調用這些方法。這是一個聽衆。它會在事件發生時被調用。 –