如何在 Spring Boot 中获取 userDetailsService
Posted
技术标签:
【中文标题】如何在 Spring Boot 中获取 userDetailsService【英文标题】:How to get userDetailsService in SpringBoot 【发布时间】:2014-10-03 00:41:44 【问题描述】:您好,我尝试使用 InMemoryDao 获取 userDetailsService。但我无法得到它,我尝试了 @Autowired、@Inject (UserDetailsService、InMemoryDaoImpl、InMemoryManager。 ..) 但无法正常工作。
有 公共类 Security 扩展 WebSecurityConfigurerAdapter 和 公共类 GlobalSecurity 扩展 GlobalAuthenticationConfigurerAdapter。
仅使用 WebSecurityConfigurerAdapter 尝试了所有四个 @Enable... 有人可以帮我解决这个问题吗,我需要使用 loadUserByUsername()?
【问题讨论】:
【参考方案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方法,但是创建了名为userDetailsService的Bean。下面是控制台打印 2014-08-10 02:18:46.102 INFO 3636 ...AbstractConnector...Started SelectChannelConnector 0.0.0.0:8080 userDetailsService... user 你知道为什么我的课程没有被检查吗?我通过使用静态类解决了这个问题。 您的应用程序类(扩展 SpringBootServletInitializer)是否使用 @ComponentScan 注解? 是的,有和没有扩展 SpringBootServletInitializer 都一样...我无法以这种方式工作。我通过创建静态类并设置 userDetailsService 然后在我的类中使用静态类的 getUserDetailsService 解决了这个问题。我也可以getBean(“userDetailsService”),唯一不清楚的是为什么spring不检查这个类的@Autowired或@Inject:S以上是关于如何在 Spring Boot 中获取 userDetailsService的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring-Boot-REST 调用中获取用户信息?
如何在 Spring Boot 中获取 userDetailsService
如何在 /info 执行器端点中获取 Spring Boot 的版本