如何在 Spring Boot 中获取 userDetailsS​​ervice

Posted

技术标签:

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

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

公共类 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方法,但是创建了名为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

以上是关于如何在 Spring Boot 中获取 userDetailsS​​ervice的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring-Boot-REST 调用中获取用户信息?

如何在 Spring Boot 中获取请求 URL

如何在 Spring Boot 中获取 userDetailsS​​ervice

如何在 /info 执行器端点中获取 Spring Boot 的版本

如何在spring sts中获取spring boot web项目的默认结构?

如何使用 Keycloak 在 Spring Boot 中获取当前登录用户?