buqiyuan/nest-admin

refreshToken问题

Gosnails opened this issue · 5 comments

  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校验也只用了过期时间匹配,

我仔细看了下作者的refreshToken这块逻辑,应该是用accessToken来获取关联refreshToken进行校验,来刷新accessToken,我目前是这么做的。主要之前接触的都是拿refreshToken来换,由于前端接触后端较少,不清楚这块的常规方案。

一般refreshToken签名验证通过后再验证关联的accessToken是否正确就没问题了.

我也看到这个模块了但是我好奇为什么需要把accessToken和refreshToken存数据库呢?有没有好心的大佬来解答一下小弟的疑惑

我也看到这个模块了但是我好奇为什么需要把accessToken和refreshToken存数据库呢?有没有好心的大佬来解答一下小弟的疑惑

跟踪 状态

对啊,好奇怪。这个refreshToken的逻辑就写了一半就没了。
按理来说有个接口是通过refreshToken刷新accessToken的。
但是我找了好久没找到这个接口。
只有一个accessToken刷新token的???accessToken没过期为什么要刷新??