Spring Boot Oauth2多点登录,access_token刷新问题

// 使用用户名和密码获取token(得到access_token和refresh_token)
http://localhost:8181/oauth/token?grant_type=password&username=admin&password=123456

// 使用refresh_token刷新access_token
http://localhost:8181/oauth/token?grant_type=refresh_token&refresh_token=c24a6143-97c8-4642-88b9-d5c5b902b487

access_token有效期是两小时,refresh_token有效期是两个月。
我的问题是,在多端登录的情况下,因为是使用用户名和密码获取token,所以如果是两小时以内的多端登录,只要access_token不过期,一般获取到的都是一样的access_token和refresh_token。如果客户端A使用refresh_token刷新了access_token,客户端B发现自己的access_token因为客户端A刷新access_token的原因失效了,客户端B也去刷新access_token,造成客户端A的access_token又失效了,客户端A又得去刷新access_token。这种情况如何避免或者如何解决?

阅读 8.1k
2 个回答

记录每次刷新token的设备,如果这一次刷新的设备和上一次一致就返回新token,如果设备不一致就返回上一次的token,如果上一次的token已过期就返回新token,这样让两台设备的token保持一样就不会出现问题。或者你也可以每台设备单独授权一个token。其实就是要区分两个设备。答案来自https://www.oschina.net/quest...

新手上路,请多包涵

最后怎么解决的?

推荐问题