【发布时间】:2019-07-30 15:45:59
【问题描述】:
我正在使用 Nuxt 创建一个应用,使用 nuxt 和 nuxt-auth 来处理身份验证。
我想要两个用于身份验证的中间件 - 身份验证和访客。 auth 用户应该无法访问登录页面 ('/') 并将被重定向到仪表板,但可以访问其他任何地方。来宾用户应该无法访问除登录页面之外的任何页面,并且在任何尝试时都会重定向到登录页面。
目前在身份验证和登录方面一切正常。但是,当经过身份验证的用户单击指向“/”的链接或刷新页面时,他们将被发送到登录页面并再次拥有“访客”特权,即使他们在 vuex 商店中仍然设置为“loggedIn”。看起来当 SSR 启动时,auth 存储在服务器上不可用,因此它将用户重定向到登录页面,然后一切都搞砸了,但这只是猜测。
下面是一些代码:
//布局/默认
export default {
middleware: 'guest'
}
// 布局/仪表板
export default {
middleware: 'auth'
}
// 中间件/guest.js
export default function (ctx) {
if (ctx.app.$auth.$state.loggedIn) {
return ctx.app.$auth.redirect('home')
}
}
另一个身份验证中间件是使用“nuxt-auth”创建的,nuxt.config.js 文件具有以下设置:
auth: {
localStorage: false,
cookie: {
options: {
secure: true
}
},
redirect: {
login: '/',
logout: '/',
callback: '/api/auth/callback',
home: '/dashboard'
}
},
【问题讨论】:
标签: authentication vue.js middleware nuxt.js