Промежуточное ПО для аутентификации Nuxt Firebase - PullRequest
0 голосов
/ 23 сентября 2018

Я использую Nuxt (vue) в качестве внешнего интерфейса, а Firestore и Authentication как Backend.Я установил, что проверка подлинности работает до определенного уровня, но моя проблема заключается в обновлении браузера, который сбрасывает состояние, поэтому мое Middleware возвращает ложный результат.

Вот некоторые фрагменты кода:

Middleware:

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 Ответ

0 голосов
/ 23 сентября 2018

Вам нужно инициализировать вашего пользователя в методе nuxtServerInit , в противном случае ваше промежуточное ПО будет выполняться на сервере с пустым пользователем, и, следовательно, произойдет перенаправление.

Вам необходимо получить данные пользователя из reqобъект.Смотрите этот репозиторий для справочной реализации https://github.com/davidroyer/nuxt-ssr-firebase-auth.v2

...