No se pudo Autowire SessionRegistry en la primavera de arranque

El B:

Tengo aplicación de inicio de la primavera lo que emigró de aplicación de la primavera. Todo funciona bien. He decidido añadir un nuevo funcional que conecta con SessionRegistry. Y me encontré con que no podía ser sessionRegistry autowired. Simplemente muestra No se pudo Autowire. No hay granos de tipo 'SessionRegistry encontrado. Pensé que podría haber problemas de idea y trató de ejecutar el proyecto con estas cuestiones de compilación pero la aplicación no se inicia:


Error al iniciar


Descripción:

Parámetro 0 de constructor en SessionUtils requiere un grano de tipo 'org.springframework.security.core.session.SessionRegistry' que no pudo ser encontrado.

Acción:

Considere la definición de un grano de tipo 'org.springframework.security.core.session.SessionRegistry' en su configuración.

Este es un ejemplo de mi clase en la que trato de usar 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();
                    }
                }
            }
        }
    }
}

He intentado añadir @ComponentScan, pero no sirvió de nada. Mi código 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);
    }
}

¿Alguien tiene sugerencias?

Golam Mazid Sajib:

Es necesario añadir el grano en su configurationclase:

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

Se puede mantener en su clase de aplicación.

public class Application {

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

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

    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=224185&siteId=1
Recomendado
Clasificación