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

Spring OAuth服务器JBDCTokenStore错误

郁光熙
2023-03-14

我试图将数据库添加到Spring OAuth服务器示例代码中。这是数据源配置。

@Bean(name = "dataSource")
public DriverManagerDataSource dataSource() {
    DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
    driverManagerDataSource.setDriverClassName("org.mariadb.jdbc.Driver");
    driverManagerDataSource.setUrl("jdbc:mariadb://localhost:3306/OAuth");
    driverManagerDataSource.setUsername("root");
    driverManagerDataSource.setPassword("password");
    return driverManagerDataSource;
}

和EndpointConfig

    @Autowired
    private DataSource dataSource;

    @Bean
    public JdbcClientDetailsService clientDetailsService() {
        return new JdbcClientDetailsService(dataSource);
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.withClientDetails(clientDetailsService());
    }
    @Bean
    public TokenStore tokenStore() {
        //return new InMemoryTokenStore();
        return new JdbcTokenStore(dataSource);
    }
    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.tokenStore(tokenStore);
        endpoints.userApprovalHandler(userApprovalHandler);
        endpoints.authenticationManager(authenticationManager);
    }

但是我在JbdcTokenStore上收到错误,JdbcClientDetailsService工作正常。

错误消息:

原因:java。lang.IllegalArgumentException:需要数据源

原因:组织。springframework。豆。工厂BeanCreationException:创建名为“tokenStore”的bean时出错,该bean在类路径资源[org/springframework/security/oauth/examples/sparklr/config/OAuth2ServerConfig$AuthorizationServerConfiguration.class]中定义:bean实例化失败;嵌套异常为org。springframework。豆。工厂BeanDefinitionStoreException:工厂方法[public org.springframework.security.oauth2.provider.token.TokenStore org.springframework.security.oauth.examples.sparklr.config.OAuth2ServerConfig$AuthorizationServerConfiguration.TokenStore()]引发异常;嵌套的异常是java。lang.IllegalArgumentException:需要数据源

我不知道发生了什么。数据库和表都很好。(我使用示例提供的sql文件。)

        @Bean
    public TokenStore tokenStore() {
        //return new InMemoryTokenStore();
        return new JdbcTokenStore(dataSource());

    }

    @Bean
    public DriverManagerDataSource dataSource() {
        DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
        driverManagerDataSource.setDriverClassName("org.mariadb.jdbc.Driver");
        driverManagerDataSource.setUrl("jdbc:mariadb://localhost:3306/OAuth");
        driverManagerDataSource.setUsername("root");
        driverManagerDataSource.setPassword("a89019");
        return driverManagerDataSource;
    }

我只是在它下面添加了一个新bean,并将dataSource更改为dataSource(),它就可以工作了。我无法理解,为什么JdbcClientDetailsService与原始服务一起工作。但是JdbcTokenStore需要一个新的。我如何更改这部分代码,因为重复的代码,代码看起来很混乱。

共有1个答案

柯捷
2023-03-14

尝试使用@主标记您的数据源bean。在此处查看更多详细信息:77.数据访问

 类似资料:
  • 我刚刚安装了Ruby193和Ruby200,在创建了一个新的应用程序之后,我正在尝试加载服务器,但是我得到了下面的错误。 我用gem'sqlite3'替换了sqlite3 gem,'~ 有人知道怎么修吗? Gemfile是 Bundle Show提供捆绑包中包含的宝石: actionmailer(3.2.13) actionpack(3.2.13) activemodel(3.2.13) acti

  • 我用Laravel开发了自己的网站。它在Localhost中运行良好。 所以我已经将我的文件移动到实时服务器(byethost.com)。当我试图访问我的网站,我得到了一个错误(服务器错误500)。我是新来的。请任何人帮助我解决我的问题。 注意:已将所有本地文件移动到服务器中的public_html文件夹中。然后将文件移动到服务器中的目录。并且还更改了应用程序文件中的路径。 代码: 免费托管网址:

  • 我在从服务器构建时遇到问题。我的项目是一个使用Netbeans IDE的Android应用程序。当我运行我的应用程序时,一切正常,编译器完全不报告任何错误。但是当我向服务器发送build Netbeans时,我会报告一个成功的构建,但是当我登录到构建服务器时,我看到的是一个构建失败并带有错误日志。 以下是我从生成服务器获得的错误日志: 构建失败/home/ec2 user/android sdk/

  • 大家好,我刚刚按照给出的步骤进行操作,以便使用parse4cn1 lib实现推送通知。在发送Android构建时,我收到了此错误构建,我真的不知道下一步该做什么,因为我仔细按照说明进行操作。任何帮助将不胜感激。下面是导致错误的链接.txt文件 https://drive.google.com/open?id=0ByIex_y9vYt5UGpfNS1YdkdLZ0k

  • 我在GAE上开发应用程序,我在本地测试网站,但是,每次我试图将其部署到GAE时,它都报告错误:服务器错误 我在谷歌搜索了很多,似乎没有答案可以解决我的问题。当我在GAE应用程序中查找日志时,以下是我目前发现的主要问题。最初,我认为这是JDK8的原因,但当我设置JDK8时,我甚至不能在本地运行应用程序!

  • 由于Grav配置错误导致服务器错误。 当服务器遇到内部错误或意外发生的事情时,Grav无法提供并恢复页面。 如果服务器在生产模式下运行,要隐藏用户的信息,则会出现服务器错误消息。 所有错误消息都记录在文件《your_folder_name》/logs/Grav.log下的Grav.log文件中。 以下是可能导致服务器错误的一些原因 - 过时的配置 文件权限不正确 格式化的配置文件无效 Grav不知