美文网首页
1. spring-security-oauth获取token报

1. spring-security-oauth获取token报

作者: hoob | 来源:发表于2020-07-21 17:16 被阅读0次

    1. 需求: 系统存在两种类型的用户, 存储在不同的表中, 需要用不同的鉴权逻辑

    2. 异常原因: 

    根本原因是注册了两个UserDetailsService, 当InitializeUserDetailsManagerConfigurer执行configure的时候, 会去spring容器中获取UserDetailsService, 当获取到的实例数量>1时, 返回null, 进而导致AuthenticationManagerBuilder没有将DaoAuthenticationProvider注册进去, 会生成ProviderManager代理类, 然后将这个代理类设置为下一个ProviderManager的parent, 当获取token时, ProviderManager.authenticate使用本类的AuthenticationProvider认证失败后, 会调用parent进行认证, 然而parent是同类型的代理类, 实际上执行的还是当前类, 无限递归, 最终 StackOverflow

    感觉这块作者设计的不合理, 获取到多个UserDetailsService的时候应该抛出异常, 不应该返回null

    相关文章

      网友评论

          本文标题:1. spring-security-oauth获取token报

          本文链接:https://www.haomeiwen.com/subject/cnqwkktx.html