代码之家  ›  专栏  ›  技术社区  ›  niclas_4

Nuxt Firebase身份验证中间件

  •  1
  • niclas_4  · 技术社区  · 6 年前

    我使用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)
            }
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   Aldarund    6 年前

    nuxtServerInit

    您需要从req对象获取用户数据。参考本回购协议的实施 https://github.com/davidroyer/nuxt-ssr-firebase-auth.v2