【问题标题】:How to get userDetailsService in SpringBoot如何在 Spring Boot 中获取 userDetailsS​​ervice
【发布时间】:2014-10-03 00:41:44
【问题描述】:

您好,我尝试使用 InMemoryDao 获取 userDetailsS​​ervice。但我无法得到它,我尝试了 @Autowired、@Inject (UserDetailsS​​erviceInMemoryDaoImplInMemoryManager。 ..) 但无法正常工作。

公共类 Security 扩展 WebSecurityConfigurerAdapter公共类 GlobalSecurity 扩展 GlobalAuthenticationConfigurerAdapter。

仅使用 WebSecurityConfigurerAdapter 尝试了所有四个 @Enable... 有人可以帮我解决这个问题吗,我需要使用 loadUserByUsername()?

【问题讨论】:

    标签: spring-security spring-boot


    【解决方案1】:

    您可以通过在扩展WebSecurityConfigurerAdapter 的配置类中覆盖方法userDetailsServiceBean() 来公开userDetailsService bean。整个方法如下所示:

    @Bean(name = "myUserDetailsService")
    @Override
    public UserDetailsService userDetailsServiceBean() throws Exception {
        return super.userDetailsServiceBean();
    }
    

    然后您可以使用 @Autowired 注入它。

    【讨论】:

    • 谢谢,这是真的……但无论我尝试什么,我都无法获得 @Autowired@Injected。我的班级:@ComponentScan @Configurable 公共类 AuthenticationBroker 扩展 BrokerFilter 实现 Broker 未检查注入。我尝试了自动装配字段和setter,没有调用setter方法,但是创建了名为userDetailsS​​ervice的Bean。下面是控制台打印 2014-08-10 02:18:46.102 INFO 3636 ...AbstractConnector...Started SelectChannelConnector 0.0.0.0:8080 userDetailsS​​ervice... user 你知道为什么我的课程没有被检查吗?我通过使用静态类解决了这个问题。
    • 您的应用程序类(扩展 SpringBootServletInitializer)是否使用 @ComponentScan 注解?
    • 是的,有和没有扩展 SpringBootServletInitializer 都一样...我无法以这种方式工作。我通过创建静态类并设置 userDetailsS​​ervice 然后在我的类中使用静态类的 getUserDetailsS​​ervice 解决了这个问题。我也可以getBean(“userDetailsS​​ervice”),唯一不清楚的是为什么spring不检查这个类的@Autowired@Inject:S
    猜你喜欢
    • 2015-04-07
    • 2017-01-31
    • 1970-01-01
    • 2020-09-24
    • 2012-06-11
    • 2014-09-03
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多