Spring Security 5 заставляет пользователя повторно войти в систему во время выполнения - PullRequest
0 голосов
/ 27 декабря 2018

Я занимаюсь разработкой Spring Web Project, включая Spring Security 5. Он имеет управление пользователями.Изменение роли зарегистрированного пользователя вступает в силу только после повторного входа в систему.Я пытался выйти из среды выполнения пользователя, но getAllPrincipals всегда возвращает 0

. Я уже пробовал это.

public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) {
    container.addListener(HttpSessionEventPublisher.class);
 }
}

public void expireUserSessions(String username) {
 System.out.println(sessionRegistry.getAllPrincipals().size());//always 0
    sessionRegistry.getAllPrincipals().forEach(it -> System.out.println(it));
    for (Object principal : sessionRegistry.getAllPrincipals()) {
        System.out.println("hello");
        if (principal instanceof User) {
            UserDetails userDetails = (UserDetails) principal;
            System.out.println("user details " + userDetails);
            if (userDetails.getUsername().equals(username)) {
                for (SessionInformation information : sessionRegistry.getAllSessions(userDetails, true)) {
                    information.expireNow();
                }
            }
        }
    }
}   

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {

@Override
protected boolean enableHttpSessionEventPublisher() {
    return true;
 }
}

@Bean
public SessionRegistry sessionRegistry() {
    return new SessionRegistryImpl();
}

@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
    return new HttpSessionEventPublisher();
}
...