【问题标题】:Nuxt Auth Module c5 doesn't refresh token automatically when token expires令牌过期时,Nuxt Auth Module c5 不会自动刷新令牌
【发布时间】:2021-10-22 01:34:18
【问题描述】:

版本

模块: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 中的 /api/account/refresh 端点返回以下内容:

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

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

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

我错过了什么?

【问题讨论】:

    标签: authentication nuxt.js nuxt-auth


    【解决方案1】:

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

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 2021-09-11
    • 1970-01-01
    • 2021-08-25
    • 2020-10-23
    • 2021-09-06
    • 2019-04-07
    • 2012-02-15
    相关资源
    最近更新 更多