关于刷新Token,如果是非root用户,逻辑是有些问题的吧
lihongyiyi opened this issue · 1 comments
lihongyiyi commented
如果刷新接口传过来的是无效token,并且登陆的是非root用户,那么鉴权的这个地方:
if config.C.IsDebugMode() {
wrapUserAuthContext(c, config.C.Root.UserName)
c.Next()
return
}
直接将root作为userID设置到上下文。
然后继而执行到刷新接口的 RefreshToken 方法,ginplus.GetUserID(c) 拿到的始终root,并根据root作为userID生产新token,然而此时并不是root用户在请求资源,应该是有问题的
对这个问题:
-
能不能对接口增加传userID来实现,在RefreshToken中,单独验证token是否有效,如果有效,直接返回旧的token, 否则根据userID生的token呢?
-
或者 单独验证token是否有效,如果有效,直接返回旧的token;否则 调 jwt.ParseWithClaims(即使过期也能拿到Claims数据)获取userID,然后生产新token
LyricTian commented
这个地方是默认 debug 模式下使用 root 用户,方便开发模式下使用。