Cześć, chciałem napisać panel administratora do pracy magisterskiej. Stworzyłem panel w którym administrator widzi jakie sesje aktualnie są aktywne.
sessionRegistry
.getAllPrincipals()
.stream()
.map(UserDetails.class::cast)
.filter(userDetails -> userDetails
.getUsername()
.equals(username))
.map(userDetails -> sessionRegistry.getAllSessions(userDetails,false))
.flatMap(Collection::stream)
.filter(sessionInformation -> {
sessionInformation.expireNow();
return true;
})
.map(SessionInformation::getSessionId)
.forEach(sessionRegistry::removeSessionInformation);
wywoływanie funkcji sessionInformation.expireNow() i sessionRegistry::removeSessionInformation daje mi to, że sesja znika z listy ale "kicknięty" użytkownik dalej korzysta z RestApi.
Miał ktoś może podobny case i byłby wstanie podać jakąś wskazówkę?
tszThreadLocal
. Może działać dopóki nie próbuje się wyskalować aplikacji.SecurityContextHolder.clearContext();