[英]Nuxt.js auth module does not redirect logged in user
经过身份验证的用户仍然可以访问/login
页面。 如果我点击指向/login
页面的链接,我将被重定向到另一个页面,该页面工作正常。 但是如果我手动输入/login
到 URL,我仍然被带到/login
页面,即使我已经登录。我想要实现的是,当用户登录时,他们应该被重定向到/retailer/account
在页面上显示任何组件之前的/retailer/account
页面(如果它们手动输入/login
页面)。
我尝试使用beforeMount()
函数, beforeCreate()
函数,遵循auth: 'guest'
的文档auth: 'guest'
中间件,但是它似乎没有任何效果,并且在页面完全呈现之前, loggedIn
总是返回false
。
我的设置:
nuxt.config.js
:
export default {
mode: 'universal',
target: 'static',
auth: {
cookie: {
prefix: 'auth_'
},
// Options
redirect: {
login: '/login',
logout: '/login',
callback: false,
home: '/retailer/account'
},
strategies: {
local: {
endpoints: {
login: {
url: '/auth/login',
method: 'post',
propertyName: 'access_token',
credentials: true
},
logout: {
url: '/auth/logout',
method: 'post'
},
user: {
url: '/auth/me',
method: 'post',
propertyName: '',
credentials: false
}
},
token: {
required: true,
type: 'Bearer',
global: true
},
autoFetchUser: true
}
},
preserveState: true,
watchLoggedIn: true
},
router: {
middleware: [
'auth'
]
}
}
layouts/default.vue
:
export default {
auth: false
}
pages/retailer/account.vue
:
export default {
middleware: 'auth'
}
pages/login.vue
:
export default {
middleware: 'authenticated',
auth: 'guest'
}
尝试了我能找到的各种中间件示例并制作了一些简单的重定向代码,但是,如前所述, app.$auth.loggedIn
总是从服务器端返回false
,所以我永远不会被重定向。
middleware/authenticated.js
export default function ({ app, redirect }) {
if (app.$auth.loggedIn) {
return redirect(app.localePath({ name: 'index' }))
}
}
稍后,当 Vue 对应用程序进行loggedIn
时, loggedIn
当然是true
。
任何想法我做错了什么? 任何指导将是一个巨大的帮助!
Nuxt auth 模块有一个中间件auth
可以将未经auth
验证的用户重定向到登录页面,并将经过身份验证的用户重定向到主页。
我看到您在 nuxt.config.js 中正确配置了 auth 中间件。
问题是 auth 中间件仅适用于 SSR 的服务器端。 但是您配置为生成静态网站。
您可以从 nuxt.config.js 中删除 line target: 'static',
。
或者通过这个问题找到一些静态站点身份验证的帮助: https : //github.com/nuxt/nuxt.js/issues/3023
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.