gpt4 book ai didi

spring security oauth2 ClassCastException 配置 DefaultTokenServices

转载 作者:行者123 更新时间:2023-12-04 10:49:48 24 4
gpt4 key购买 nike

我正在尝试使用带有配置的 JdbcTokenStore 和具有无限生命周期访问 token 的 DefaultTokenServices 使用 spring boot 和 spring security oauth 运行示例应用程序。

使用 gradle bootRun 运行此应用程序,应用程序将无法启动并抛出“Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy51 cannot be cast to org.springframework.security.oauth2.provider.token。 DefaultTokenServices”

为什么在 DefaultTokenServices bean 周围有一个代理?

奇怪的是 - 使用 InMemoryTokenStore 运行应用程序......一切正常(参见内存分支)。

源代码 https://github.com/grafjo/oauth_demo/blob/master/src/main/java/demo/AuthorizationServerConfiguration.java

完整跟踪:http://pastebin.com/SUcwz4S5

最佳答案

快速浏览一下 DefaultTokenService 会发现它带有 @Transactional 注释。 Spring 将把它包装在一个代理中来为事务提供服务——因此你需要通过它的接口(interface)与类进行交互。

对于您的 tokenService bean:

@Bean
public DefaultTokenServices tokenServices() {
final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setAccessTokenValiditySeconds(-1);
defaultTokenServices.setTokenStore(tokenStore());
return defaultTokenServices;
}

尝试将其更改为:
@Bean
public AuthorizationServerTokenServices tokenServices() {
final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setAccessTokenValiditySeconds(-1);
defaultTokenServices.setTokenStore(tokenStore());
return defaultTokenServices;
}

关于spring security oauth2 ClassCastException 配置 DefaultTokenServices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com