2

版本

模块:5.0.0-1624817847.21691f1 nuxt:2.15.8

Nuxt 配置

  • 普遍的

Nuxt 配置

// Auth: https://auth.nuxtjs.org/ (v5)
auth: {
  redirect: {
    login: '/account/login/',
    logout: '/account/login/',
    callback: '/account/login/',
    home: '/account/beams/'
  },
  strategies: {
    local: {
      scheme: 'refresh',
      token: {
        property: 'access_token',
        maxAge: 120, // seconds, 2 minutes
        global: true
      },
      refreshToken: {
        property: 'refresh_token',
        data: 'refresh_token',
        maxAge: 1209600 // seconds, 2 weeks
      },
      user: {
        property: 'user',
        autoFetch: true
      },
      endpoints: {
        login: { url: '/api/account/login', method: 'post', propertyName: 'token' },
        refresh: { url: '/api/account/refresh', method: 'post', },
        logout: { url: '/api/account/logout', method: 'post' },
        user: { url: '/api/account', method: 'get' }
      },
      autoLogout: false
    }
  }
},

附加信息

清单

  • [x] 我用最新的 Nuxt 版本测试过,问题仍然存在
  • [x] 我已经用最新的模块版本测试过,问题仍然存在
  • [x] 我已搜索问题跟踪器,但尚未报告此问题

重现步骤

期望什么?

当用户的令牌过期并refresh实施方案时,不应注销用户并重定向回登录屏幕,应使用刷新令牌来获取新令牌,并且过渡应该是无缝的,允许任何经过身份验证的路由继续工作。

实际发生了什么?

在我的带有 Auth 模块的 Nuxt 项目中,我已经实现了该refresh方案,但是,当我的令牌过期时,在我的令牌过期后我没有看到网络中对路由发出任何请求,我通过中间件refresh导航到受保护的页面auth.

我希望我缺少一些简单的配置?

我当前的令牌的测试期限为 1 分钟,而我的刷新令牌的测试期限为 14 天。

但是,添加时:

  • scheme: 'refresh'
  • refresh: { url: '/api/account/refresh', method: 'post', }

该功能似乎没有获取我的用户并自动让我登录。

/api/account/refresh的 API 中的端点返回以下内容:

{
  refresh_token: 'my refresh token',
  token_type: 'bearer',
  expired_in: 5000
}

/api/account/login的 API 中的端点返回以下内容:

{
  access_token: 'my token',
  token_type: 'bearer',
  expired_in: 1000
}

我错过了什么?

4

1 回答 1

0

您需要从 /api/account/login 返回刷新令牌。然后设置它的conf属性名称。

于 2021-10-25T09:21:34.177 回答