背景 : 微服务接口调用的时候报错,原来有一个rest服务用的不多,平时用的都是一些基础的服务,然后客户需要我们开放一个外部接口给他们,然后我寻思着就在这里面写接口。然后调用的时候就报如下的错。
后面跟踪源码发现 SpringSeurity 在进行身份验证的时候会首先在ProviderManager中的authenticate方法进行验证
断点继续走会进入到AuthenticaionProvider里面这是一个接口。
这个接口的实现类很多如下图。
接着往下走调用 retrieveUser方法传入的参数是当前用户和authentication信息
又是一个抽象方法看具体实现类DaoAuthenticaionProvider
进入UserDetailService的loadUserByUsername()方法
又是一个接口看具体实现类 ClientDetailsUserDetailsService
继续跟 进入loadClientByClientId方法
还是一个抽象方法
继续跟进入JdbcClientDetailService实现方法
继续跟踪打印发现sql t_sys_oauth_client_details 表关系不存在。这个错误在控制台是看不到的。
最后看了一下nacos关于auth服务的数据源配置发现这个数据库配的是一张测试库的地址。。。。。。。。。。更改一下nacos的数据源配置为正确的数据源地址后问题解决。