当前位置: 首页 > 知识库问答 >
问题:

不使用WebSecurity配置适配器的Java AuthenticationManagerBuilder

邢晗日
2023-03-14

我目前想实现这样的东西:

    @Resource
    private UserDetailsService userDetailsService;

    @Bean
    public DaoAuthenticationProvider authProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(userDetailsService);
        authProvider.setPasswordEncoder(passwordEncoder());
        return authProvider;
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authProvider());
    }

但是在中,我们将重点关注authProvider()方法和configure()

随着最近的消息WebSecurityConfigrerAdapter已被弃用。经过研究,我发现了一件事:

@Configuration
@EnableWebSecurity
public class SpringSecurity {
    @Resource
    private UsersService usersService;

    @Bean
    public Argon2PasswordEncoder passwordEncoder() {
        return new Argon2PasswordEncoder();
    }

    @Bean
    public DaoAuthenticationProvider authProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(usersService);
        authProvider.setPasswordEncoder(passwordEncoder());
        return authProvider;
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authProvider());
    }
.......

所以我也不得不这么做

@EnableAsync(proxyTargetClass = true)
@EnableCaching(proxyTargetClass = true)

这解决了另一个问题。但现在,我发现了这个错误。

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
...
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
...
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'springSecurity': Requested bean is currently in creation: Is there an unresolvable circular reference?

这也是我的用户服务

@Service
public class UsersService implements UserDetailsService {
    @Autowired
    private UsersRepository usersRepository;
...

你们介意帮我解决这个问题!谢谢:)

我还想提一下,我还没有在网上找到答案

共有1个答案

卫仲卿
2023-03-14

这个问题讨论了这样一个事实,即WebSecurityConfigureAdapter现在已被弃用,同时也使用了UserDetailsService。

也许这会有帮助。

 类似资料:
  • 我的代码中有多个WebSecurity配置适配器: 当我从ajax请求访问我的站点时,我得到:从源http://localhost:8082访问http://localhost:8080/user/authenticate的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过权限改造检查:请求的资源上不存在访问控制允许源标头。 我想我的WebSecurity配置适配器中有一些

  • 我使用的Spring安全与oAuth2,但我有一个问题,我没有找到任何答案,在许多项目的例子,你有2次配置(HttpSecurity超文本传输协议)。 例如在https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/java/org/springframe

  • 我试图通过定义从WebSecurityConfigureAdapter扩展而来的配置类,为我的自定义安全配置(LDAP JWT)创建自己的spring启动程序。但是,当我使用此初学者启动应用程序时,我会得到: 我发现由于Spring Security性的这个问题,不再可能这样做了。Spring的WebSecurityConfiguration中有一个断言: 我解决了这个问题,在启动器中添加了以下内

  • 我创建了一个授权服务,如下所示 使用此。 然后,在一个单独的spring boot项目中,我创建了一个资源服务器。 使用此。 现在,如果我使用授权服务检索到的适当令牌发送这样的请求,一切都很好。 但是,在向本地主机9090/登录发送请求时,我不想发送此令牌。 为此,我在我的资源服务器Spring启动应用程序中创建了这个类。 现在我不需要发送任何令牌即可向发送请求。 然而,我现在在使用有效令牌向ap

  • 我正在尝试为我的项目设置多个WebsecurityConfigrerAdapter,其中Spring启动执行器API使用基本身份验证进行保护,所有其他endpoint使用JWtAuthentication进行身份验证。我只是无法使它一起工作,只有较低顺序的配置可以工作。我使用Spring Boot 2.1.5。释放 带有JWT身份验证程序的安全配置1 带有用户名/密码的基本身份验证配置 我已经尝试

  • 仅仅存在一个空的就会破坏我应用程序的OAuth2。我得到 当我期待 为了让Oauth2正常工作,我必须对整个课程进行注释。即使只是注释方法也不起作用。为什么? 我学会了如何添加安全日志,但它没有打印出任何有用的信息。