Explorar el Código

AccountSessionService 添加 getLastRequest 方法, 获取已登录帐号最近活动的时间

reghao hace 2 años
padre
commit
69803d0942

+ 9 - 6
manager/src/main/java/cn/reghao/devops/manager/account/service/AccountSessionService.java

@@ -6,9 +6,9 @@ import org.springframework.security.core.session.SessionInformation;
 import org.springframework.security.core.session.SessionRegistry;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.*;
 
 /**
  * @author reghao
@@ -24,16 +24,19 @@ public class AccountSessionService {
         this.userRepository = userRepository;
     }
 
-    public void getActiveSessions() {
-        List<SessionInformation> activeSessionInfos = new ArrayList<>();
+    public Map<Integer, LocalDateTime> getLastRequest() {
+        Map<Integer, LocalDateTime> map = new HashMap<>();
         for (Object principal : sessionRegistry.getAllPrincipals()) {
             String username = (String) principal;
             User user = userRepository.findByUsername(username);
             for (SessionInformation sessionInfo : sessionRegistry.getAllSessions(principal, false)) {
                 Date date = sessionInfo.getLastRequest();
-                activeSessionInfos.add(sessionInfo);
+                LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
+                map.put(user.getId(), localDateTime);
             }
         }
+
+        return map;
     }
 
     public void deactiveSession(User user) {