Spring Security OAuth Jwt 的 userDetailService为什么会执行两次

发布于 2022-09-12 23:34:13 字数 1989 浏览 22 评论 0

我在用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文