joo*_*joo 7 spring spring-security spring-security-oauth2
我正在尝试使用spring boot和spring security oauth运行一个示例应用程序,其中包含已配置的JdbcTokenStore和一个具有无限生存期访问权限的DefaultTokenServices.
使用gradle bootRun运行此应用程序时,应用程序将无法启动并抛出"由以下引起:java.lang.ClassCastException:com.sun.proxy.$ Proxy51无法转换为org.springframework.security.oauth2.provider.token. DefaultTokenServices"
为什么在DefaultTokenServices bean周围有代理?
奇怪的是 - 使用InMemoryTokenStore运行应用程序......一切正常(参见内存分支).
小智 7
快速浏览DefaultTokenService,可以看到它是用@Transactional注释的.Spring将把它包装在代理中以服务事务 - 因此你需要通过它的接口与类进行交互.
对于您的tokenService bean:
@Bean
public DefaultTokenServices tokenServices() {
final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setAccessTokenValiditySeconds(-1);
defaultTokenServices.setTokenStore(tokenStore());
return defaultTokenServices;
}
Run Code Online (Sandbox Code Playgroud)
尝试将其更改为:
@Bean
public AuthorizationServerTokenServices tokenServices() {
final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setAccessTokenValiditySeconds(-1);
defaultTokenServices.setTokenStore(tokenStore());
return defaultTokenServices;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3855 次 |
| 最近记录: |