Um auf die Liste aller angemeldeten Benutzer zuzugreifen, müssen Sie die SessionRegistry-Instanz in Ihre Bean einfügen.
@Autowired
@Qualifier("sessionRegistry")
private SessionRegistry sessionRegistry;
Und dann können Sie mit der verletzten SessionRegistry auf die Liste aller Principals zugreifen:
List<Object> principals = sessionRegistry.getAllPrincipals();
List<String> usersNamesList = new ArrayList<String>();
for (Object principal: principals) {
if (principal instanceof User) {
usersNamesList.add(((User) principal).getUsername());
}
}
Bevor Sie jedoch die Sitzungsregistrierung einfügen, müssen Sie den Sitzungsverwaltungsteil in Ihrer spring-security.xml definieren (siehe Abschnitt Sitzungsverwaltung in der Spring Security-Referenzdokumentation ) und im Abschnitt zur Parallelitätskontrolle den Alias für das Sitzungsregistrierungsobjekt ( Sitzungsregistrierung) festlegen. Alias ), mit dem Sie es injizieren.
<security:http access-denied-page="/error403.jsp" use-expressions="true" auto-config="false">
<security:session-management session-fixation-protection="migrateSession" session-authentication-error-url="/login.jsp?authFailed=true">
<security:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" expired-url="/login.html" session-registry-alias="sessionRegistry"/>
</security:session-management>
...
</security:http>