我使用Nuxt(vue)作为前端,使用Firestore和身份验证作为后端。我获得了一定数量的身份验证,但我的问题是刷新浏览器会重置状态,因此我的中间件会返回错误的结果。
下面是一些代码片段:
中间件:
export default function ({store, redirect, route}) {
const userIsLoggedIn = !!store.state.currentUser;
if(!userIsLoggedIn) {
return redirect ('/')
}
}
插件:
import { auth } from '@/services/firebaseInit.js'
export default (context) => {
const { store } = context
return new Promise((resolve, reject) => {
auth.onAuthStateChanged(user => {
store.commit('setCurrentUser', user)
resolve()
})
})
}
现在,这在运行的应用程序中起作用,但当有人刷新一个页面时,你需要验证它不起作用,并重定向到/,现在我不知道如何解决这个问题,如果你需要更多的代码,我会提供帮助。
编辑1:
async nuxtServerInit ({ commit }, { req }) {
let user = await firebase.auth().currentUser
commit('setCurrentUser', user)
}