请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

刷新token UserDetailsService重复问题

老师您好!

发现个很奇怪的问题:

我做的是前后台分离!
(认证服务器)(资源服务器)

认证服务器分别给两个应用发令牌
两表单验证 互相不干系 一个后台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信息, 我对了无数遍 参数没有问题!

正在回答

1回答

JoJo 2019-07-15 09:59:18

不是这样的,userDetailsService和client没有对应关系。你这种情况,我建议你搞两套配置就是两个配置类,然后用@ConditionalOnProperties注解,根据配置只让某一套配置生效,然后给PC和移动端配置两个集群,用一套代码,不同的配置。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号