Spring Security OAuth Jwt 的 userDetailService为什么会执行两次
我在用JWT代替默认的OAuth的token生成器的时候,给JwtAccessTokenConverter添加了userDetailsService用来将原来的String格式的principal替换为UserDetail,但是使用以下代码执行的时候我发现每个请求进来之后userDetailService的loadUserByUsername方法会执行两次,打断点发现JwtAccessTokenConverter中的extractAuthentication方法就会执行两次,请问各位我是哪里写的有问题吗?
TokenConfig:
public class TokenConfig {
@Autowired
UserDetailsServiceImpl userDetailsService;
@Bean
public TokenStore tokenStore() {
//jwt管理令牌
return new JwtTokenStore(jwtAccessTokenConverter());
}
// JWT 签名秘钥
private static final String SIGNING_KEY = "wj-key";
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter() {
JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
jwtAccessTokenConverter.setSigningKey(SIGNING_KEY);
DefaultAccessTokenConverter accessTokenConverter = new DefaultAccessTokenConverter();
DefaultUserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter();
userTokenConverter.setUserDetailsService(userDetailsService);
accessTokenConverter.setUserTokenConverter(userTokenConverter);
jwtAccessTokenConverter.setAccessTokenConverter(accessTokenConverter);
return jwtAccessTokenConverter;
}
}
AuthorizationServiceConfig(省略部分无关代码)
public class AuthorizationServiceConfig extends AuthorizationServerConfigurerAdapter {
...
@Autowired
private TokenStore tokenStore;
@Autowired
private JwtAccessTokenConverter jwtAccessTokenConverter;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.authenticationManager(authenticationManager)
.userDetailsService(userDetailsService)
.tokenStore(tokenStore).accessTokenConverter(jwtAccessTokenConverter)
.reuseRefreshTokens(true);
}
........
}
还请各位指教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论