老师您好!
发现个很奇怪的问题:
我做的是前后台分离!
(认证服务器)(资源服务器)
认证服务器分别给两个应用发令牌
两表单验证 互相不干系 一个后台PC端网页登录 一个前端手机登录 互相不干系!token也不干系!

发现问题:
我登录PC端表单验证的url之后 获取到了token (没有问题)
我登录移动端表单验证的url之后 也获取到了token (没有问题)
先看 Oauth2AuthorizationServerConfig 的配置:
partnerAdminDetailsService 表示PC端管理员登录的UserDetails
eduUserDetailsService 表示移动端用户登录的UserDetails
这里有两个userDetailsService 当我刷新token使用/oauth/token时,Security会再一次验证我的用户信息,也就是调用userDetailsService的loadUserByUsername。 可是,不管我是用PC端登录 还是移动端登录 再刷新token时,调用的都时partnerAdminDetailsService的loadUserByUsername
我的理解是: 不应该是给哪个应用发令牌 刷新的就是哪个应用token吗?loadUserByUsername应该也是分开的啊!
我用PC端登录时 可以正确刷新token!
但是我用移动端登录时,刷新token就直接报错说用户不存在,原因是Security在验证我的信息时调的却是partnerAdminDetailsService的loadUserByUsername
移动端登录时 不应该时调用eduUserDetailsService的loadUserByUsername吗?
这是为什么?
我刷新token时传的参数都对 请求头Authorization 的Client信息都可以对上!
哪个应用刷新 我就用哪个Client信息, 我对了无数遍 参数没有问题!
Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全
了解课程