Client配置多次添加相同的客户端

Client配置多次添加相同的客户端

本文介绍了Spring Oauth2 JDBC Client配置多次添加相同的客户端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在 Spring 项目中配置 OAuth2 授权服务器.这里是配置.

I am configuring an OAuth2 authorization server in a Spring project. Here is configuration.

 @Override
public void configure(ClientDetailsServiceConfigurer clients)
  throws Exception {
    clients.jdbc(dataSource)
           .withClient("user")
           .secret("secret")
           .scopes("read", "write")
           .autoApprove(true)
           .authorizedGrantTypes(
            "password","authorization_code", "refresh_token")
        }

问题是每次我重新启动应用程序时,它都会尝试将这些客户端添加到数据库中,这是我不想要的.我收到了唯一的约束违规异常.如何将其配置为仅添加不存在的客户端?

The problem is that each time I restart application, it tries to add those clients in database, which I don't want. I am getting the unique constraint violation exception. How can I configure it to only add the clients only if they not already exists?

谢谢.

推荐答案

请找到我的答案它无需任何错误:

please find my answer it will works without any errors :

找到下面的代码

@Override
public void configure(ClientDetailsServiceConfigurer configurer) throws Exception {

    JdbcClientDetailsService jdbcClientDetailsService = new JdbcClientDetailsService(dataSource);

    if(!jdbcClientDetailsService.listClientDetails().isEmpty() ) {
    jdbcClientDetailsService.removeClientDetails(CLIEN_ID);
    }

    if(jdbcClientDetailsService.listClientDetails().isEmpty() ) {
        configurer.jdbc(dataSource).withClient(CLIEN_ID).secret(encoder.encode(CLIENT_SECRET))
        .authorizedGrantTypes(GRANT_TYPE_PASSWORD, AUTHORIZATION_CODE, REFRESH_TOKEN, IMPLICIT)
        .scopes(SCOPE_READ, SCOPE_WRITE, TRUST).accessTokenValiditySeconds(ACCESS_TOKEN_VALIDITY_SECONDS)
        .refreshTokenValiditySeconds(FREFRESH_TOKEN_VALIDITY_SECONDS).and().build();
    }
    configurer.jdbc(dataSource).build().loadClientByClientId(CLIEN_ID);
}

这篇关于Spring Oauth2 JDBC Client配置多次添加相同的客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 07:47