【发布时间】:2018-12-16 22:32:06
【问题描述】:
我有一个中间件,它检查用户在哪个注册步骤,并基于此将用户重定向到相应的页面。这是我的中间件代码:
export default function ({app, redirect, route}) {
let auth = app.$auth;
console.log('step checks middleware');
if(auth.loggedIn) {
console.log('[StepChecks Middleware][Info] User logged in');
console.log(`[StepChecks Middleware][Info] User step completed ${auth.user.step_completed}`);
if(auth.user.step_completed === '1') {
console.log(`[StepChecks Middleware][Info] Should be redirected to '/registration/2'`);
if(route.fullPath === '/registration/2') {
console.log(`[StepChecks Middleware][Info] Routing to /registration/2. No redirect.`);
} else {
console.log(`[StepChecks Middleware][Info] Should be redirected to /registration/2.`);
return redirect('/registration/2');
}
}
if(auth.user.step_completed === '3') {
console.log(`[StepChecks Middleware][Info] Should be redirected to '/registration/3'`);
if(route.fullPath === '/registration/3') {
console.log(`[StepChecks Middleware][Info] Routing to /registration/3. No redirect.`);
} else {
console.log(`[StepChecks Middleware][Info] Should be redirected to /registration/3.`);
return redirect('/registration/3');
}
}
}
}
但这会造成无限循环的重定向。
输出
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Should be redirected to /registration/2.
nuxt:render Rendering url /registration/2 +2s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Routing to /registration/2. No redirect.
nuxt:render Rendering url / +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Should be redirected to /registration/2.
nuxt:render Rendering url /registration/2 +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Routing to /registration/2. No redirect.
nuxt:render Rendering url / +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Should be redirected to /registration/2.
nuxt:render Rendering url /registration/2 +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Routing to /registration/2. No redirect.
nuxt:render Rendering url / +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Should be redirected to /registration/2.
nuxt:render Rendering url /registration/2 +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Routing to /registration/2. No redirect.
nuxt:render Rendering url / +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Should be redirected to /registration/2.
nuxt:render Rendering url /registration/2 +1s
Making request to /api/me
Making request to /api/web/interest_categories
================= Step checks middleware ==================
[StepChecks Middleware][Info] User logged in
[StepChecks Middleware][Info] User step completed 1
[StepChecks Middleware][Info] Should be redirected to '/registration/2'
[StepChecks Middleware][Info] Routing to /registration/2. No redirect.
这样下去。我无法弄清楚为什么会发生这个问题。最初我没有检查当前路径检查if(route.fullPath === '/registration/2'),在这种情况下,其余页面工作正常,但从注册页面导航到/registration/2,它正在创建无限循环的重定向。
【问题讨论】:
-
您发布的代码中似乎没有问题。看起来其他地方的东西重定向到 / 。你在使用@nuxt/auth 模块吗?
-
@Aldarund 是的。事实上,问题似乎来自 @nuxt/auth 的中间件。这是重定向到/来自
/registration/2。现在我已经删除了它并手动检查用户是否在挂载的钩子上进行了身份验证。知道为什么会发生/ -
哪个版本的nuxt auth?它只发生在 Firefox 或 chrome 中吗?
-
@Aldarund,在 Firefox 和 chrome 上。我使用的是 4.5.1 版
-
我现在也体验过,..你有没有更新解决这个@SayantanDas