令牌过期时,Nuxt Auth Module c5 不会自动刷新令牌

Posted

技术标签:

【中文标题】令牌过期时,Nuxt Auth Module c5 不会自动刷新令牌【英文标题】:Nuxt Auth Module c5 doesn't refresh token automatically when token expires 【发布时间】: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

我错过了什么?

【问题讨论】:

【参考方案1】:

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

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于令牌过期时,Nuxt Auth Module c5 不会自动刷新令牌的主要内容,如果未能解决你的问题,请参考以下文章

Nuxt Auth 如何从数据库中删除刷新令牌?

Nuxt.js + Auth(jwt 刷新令牌)

使用 Cakephp-jwt-auth [CakePHP 3] 过期后颁发新令牌

如何从 auth-module、Nuxt.js 获取 access_token

如何在.onRequest拦截器中使用axios helper setToken

Laravel / Lumen Auth JWT令牌在后续请求中无效,是否可能已过期?