【问题标题】:Nuxt Firebase Authentication MiddlewareNuxt Firebase 身份验证中间件
【发布时间】:2019-02-27 05:11:53
【问题描述】:

我使用 Nuxt(vue) 作为前端,使用 Firestore 和身份验证作为后端。我让身份验证工作到一定程度,但我的问题是刷新浏览器会重置状态,因此我的中间件返回错误结果。

这里有一些代码sn-ps:

中间件:

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)
        }

【问题讨论】:

    标签: javascript firebase vue.js firebase-authentication nuxt.js


    【解决方案1】:

    您需要在nuxtServerInit 方法中初始化您的用户,否则您的中间件将在空用户的服务器上执行,因此会发生重定向。

    您需要从 req 对象中获取用户数据。请参阅此 repo 以获取参考实现https://github.com/davidroyer/nuxt-ssr-firebase-auth.v2

    【讨论】:

    • 请问可以进一步介绍吗?我根据您的回答编辑了我的帖子,并尝试了进一步的解决方案。
    • @Badgy 和 firbase.aut().currentUser 应该从哪里获取当前用户?显然服务器上不会有任何东西。您需要从 req 对象中获取所需的数据。请参阅此 repo 以获取一些参考资料github.com/davidroyer/nuxt-ssr-firebase-auth.v2
    • 感谢您的链接和您的时间!
    猜你喜欢
    • 2019-02-26
    • 2018-10-17
    • 2020-04-30
    • 2020-04-14
    • 2021-08-26
    • 1970-01-01
    • 2020-04-01
    • 2022-12-10
    相关资源
    最近更新 更多