【发布时间】:2021-08-26 19:25:13
【问题描述】:
我正在尝试在 Nuxt 应用程序中实现 Firebase(静态)。我安装了@nuxtjs/firebase,对其进行了配置,并使其与身份验证一起使用(登录和注销都有效)。我想在登录时锁定整个应用程序。
但是当我启用中间件时,应用程序崩溃了。 这是因为,我认为,为了使模块在 SSR 中工作,还需要执行一些额外的步骤。我认为在服务器中,由于未设置用户,中间件会触发重定向,对吗? 我怎样才能实现一个工作的中间件?
中间件代码auth.js:
export default function ({ store, redirect }) {
if (!store.state.user) {
return redirect('/login')
}
}
店铺代码index.js
export const state = () => ({
user: null,
userData: {}
})
export const getters = {
}
export const mutations = {
onAuthStateChangedMutation(state, {authUser}){
if (!authUser) {
state.user = null
} else {
const { uid, email } = authUser
state.user = { uid, email }
}
},
setUserData(state, payload){
state.userData = payload
}
}
export const actions = {
async onAuthStateChangedAction({commit}, {authUser}){
if (!authUser) {
state.userData = {}
} else {
try{
const userRef = await this.$fire.firestore.collection('users').doc(authUser.uid).get()
const userData = await userRef.data()
commit('setUserData', userData)
}
catch(e){
console.log(e)
}
}
}
}
开启nuxt.config
firebase: {
services:{
auth:{
ssr: true,
initialize:{
onAuthStateChangedMutation: 'onAuthStateChangedMutation',
onAuthStateChangedAction: 'onAuthStateChangedAction',
}
},
firestore: true,
analytics: true
}
},
router:{
middleware: 'auth'
}
【问题讨论】:
标签: firebase firebase-authentication nuxt.js middleware