Impossible de lier automatiquement SessionRegistry au printemps démarrage

B:

Je demande de démarrage de printemps ce qui a migré de l'application de printemps. Tout fonctionne très bien. J'ai décidé d'ajouter une nouvelle fonctionnalité qui reliait avec SessionRegistry. Et je trouve que sessionRegistry ne pouvait pas être autowired. Juste affiche Impossible de lier automatiquement. Pas de haricots de type « SessionRegistry » trouvé. Je pensais qu'il pourrait y avoir des problèmes d'idée et essayé de l'exécution du projet avec cette compilation de problèmes, mais l'application ne démarre pas:


APPLICATION DÉBUT MANQUE


La description:

Paramètre 0 du constructeur dans SessionUtils requis un bean de type « org.springframework.security.core.session.SessionRegistry » qui n'a pas pu être trouvé.

Action:

Pensez à la définition d'un bean de type « org.springframework.security.core.session.SessionRegistry » dans votre configuration.

Ceci est par exemple de ma classe où j'essaie d'utiliser SessionRegistry:

    import org.springframework.security.core.session.SessionRegistry;

import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.session.SessionInformation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class SessionUtils {

    private final SessionRegistry sessionRegistry;

    @Autowired
    public SessionUtils(SessionRegistry sessionRegistry) {
        this.sessionRegistry = sessionRegistry;
    }

    public void expireUserSessions(String username) {
        for (Object principal : sessionRegistry.getAllPrincipals()) {
            if (principal instanceof User) {
                UserDetails userDetails = (UserDetails) principal;
                if (userDetails.getUsername().equals(username)) {
                    for (SessionInformation information : sessionRegistry.getAllSessions(userDetails, true)) {
                        information.expireNow();
                    }
                }
            }
        }
    }
}

J'ai essayé d'ajouter @ComponentScan, mais il n'a pas aidé. Mon code Application.class:

    import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;

/**
 * Main class for Spring Boot
 */
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
        FreeMarkerAutoConfiguration.class, HttpEncodingAutoConfiguration.class, WebMvcAutoConfiguration.class})
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Quelqu'un at-il des suggestions?

Golam Mazid Sajib:

Vous devez ajouter le haricot dans votre configurationclasse:

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

Vous pouvez le garder dans votre classe d'application.

public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

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

    }
}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=224183&siteId=1
conseillé
Classement