一、该问题的重现步骤是什么?
第三方登录bladex使用的justauth,然后在blade-starter-social这个模块里面有个SocialUtil工具类
是这样写的,多的我就不截图了,都差不多,注意这里的构造方法
2. 以AuthWeChatOpenRequest为例
一层层往里面看,这里使用的state缓存是一个,使用ConcurrentHashMap实现的缓存。
是存在blade-auth服务的内存中的,如果blade-auth微服务有多个实例(集群环境),会出现第三方登录state读不到,导致state不正确而无法登录的bug。
不过在单机的情况下是没有这个问题的
二、你期待的结果是什么?实际看到的又是什么?
期待在集群环境下,第三方登录没有此bug。实际上blade-auth微服务有多个实例的时候是会出现登录不了的问题的。
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
2.7.2 centos7
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
实际上,justauth的官方文档里面就有自定义redis缓存state的实现。照抄一遍就可以把state缓存到redis中,所有的blade-auth微服务都去redis中取state,即可。
然后SocialUtil工具类在new各个平台的authRequest时使用另一个构造方法。
我自己已经等不及了,自己改了。
问题已经记录,后续会优化,谢谢反馈
======
已解决:https://center.bladex.cn/blade/BladeX-Tool/commit/05de2365c862aec8066245be5ac289afa25b49cc
扫一扫访问 Blade技术社区 移动端