令牌过期时,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 不会自动刷新令牌的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cakephp-jwt-auth [CakePHP 3] 过期后颁发新令牌
如何从 auth-module、Nuxt.js 获取 access_token