我正在使用spring和jwt令牌熟悉oauth2.0 tutorial。我想知道tokenServices()
类中SecurityConfig
的角色。我的问题是,当我通过以下方式将访问令牌有效性设置为30s
时,defaultTokenServices.setAccessTokenValiditySeconds(30);
不起作用。在AbstractTokenGranter
中,自动连线的AuthorizationServerTokenServices
bean是DefaultTokenServices
,但设置了默认的43200s
值(不是30
)。但是,当我通过ClientDetailsServiceConfigurer
在configurer.accessTokenValiditySeconds(30)
上直接设置它时,它可以工作。
问题是为什么设置access token validity
在这里起作用:
@Override
public void configure(ClientDetailsServiceConfigurer configurer) throws Exception {
configurer
.inMemory()
.withClient(clientId)
.secret(passwordEncoder.encode(clientSecret))
.authorizedGrantTypes(grantType)
.scopes(scopeRead, scopeWrite)
.resourceIds(resourceIds)
.accessTokenValiditySeconds(30);
}
但不在这里:
@Bean
@Primary
public DefaultTokenServices tokenServices() {
final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(tokenStore());
defaultTokenServices.setSupportRefreshToken(true);
defaultTokenServices.setAccessTokenValiditySeconds(30);
return defaultTokenServices;
}
根据this post中的@DeezCashews答案,它应该在两个地方都有效。