【发布时间】: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