发现网上很多人用JWT时都会设置2个token:access_token和refresh_token,access_token设置成2个小时过期,refresh_token设置成7天过期,如果access_token过期了refresh_token没有过期就重新生成一个新的access_token,如果refresh_token过期了就让用户重新登录。
我就纳闷直接设置一个token让它7天过期不就行了吗,有说设置2个token安全性更高,可是人家能拿到你其中一个token必定就能拿到另一个。或者设置2个token难道是有些特殊场景需要?希望有经验的能帮助答疑解惑!
谢谢!!!
这个问题看了不少帖子,确实都没怎么太讲清楚。就我的理解,refresh token的出现完全是应对accessToken存储在客户端的场景下: access token存储在客户端,这就有泄露的可能,所以一般授权服务器给了access token更短的过期时间。 一旦过期,会要求用户重新登录授权(比如两个小时后), 这样的用户体验一点也不好。接着出现了refresh token,它一般是直接存储在服务器上,作用就是在access token过期后重新获取,减少用户重新登录的频次。