refreshToken问题
Gosnails opened this issue · 5 comments
Gosnails commented
async refreshToken(accessToken: AccessTokenEntity) {
const { user, refreshToken } = accessToken
if (refreshToken) {
const now = dayjs()
// 判断refreshToken是否过期
if (now.isAfter(refreshToken.expired_at))
return null
const roleIds = await this.roleService.getRoleIdsByUser(user.id)
const roleValues = await this.roleService.getRoleValues(roleIds)
// 如果没过期则生成新的access_token和refresh_token
const token = await this.generateAccessToken(user.id, roleValues)
await accessToken.remove()
return token
}
return null
}
refreshToken没有相关接口,refreshToken校验也只用了过期时间匹配,
Gosnails commented
我仔细看了下作者的refreshToken这块逻辑,应该是用accessToken来获取关联refreshToken进行校验,来刷新accessToken,我目前是这么做的。主要之前接触的都是拿refreshToken来换,由于前端接触后端较少,不清楚这块的常规方案。
jingshuixiao-sbi-dalian commented
一般refreshToken签名验证通过后再验证关联的accessToken是否正确就没问题了.
907014165 commented
我也看到这个模块了但是我好奇为什么需要把accessToken和refreshToken存数据库呢?有没有好心的大佬来解答一下小弟的疑惑
jingshuixiao-sbi-dalian commented
我也看到这个模块了但是我好奇为什么需要把accessToken和refreshToken存数据库呢?有没有好心的大佬来解答一下小弟的疑惑
跟踪 状态
FerretAngel commented
对啊,好奇怪。这个refreshToken的逻辑就写了一半就没了。
按理来说有个接口是通过refreshToken刷新accessToken的。
但是我找了好久没找到这个接口。
只有一个accessToken刷新token的???accessToken没过期为什么要刷新??