Ich benutze Firebase mit VueJS (und VueRouter).VueJS: Umleitung zwischen zwei Seiten
Ich habe ein Problem mit der Umleitung. Ich möchte zwischen zwei Seiten umleiten. Die erste Seite wird für die Authentifizierung und die zweite für Inhalte verwendet, die nur für angemeldete Benutzer sichtbar sein sollen.
Mein Zustand hält die Feuerbasis Benutzerschlüssel (die durch eine Mutation bevölkert wird, die Feuerbasis ruft):
state: {
user: { key: null }
}
Die Authentifizierung Seite diese Zeilen:
beforeCreate() {
if (this.$store.state.user.key !== null) {
this.$router.replace('/')
}
}
Und die geheime Seite diese:
beforeCreate() {
if (this.$store.state.user.key === null) {
this.$router.replace('/new')
}
}
Aber: die Umleitung von der Authentifizierungsseite auf die geheime Seite findet nicht statt.
Meine Vue-dev-tools zeigen an, dass der Benutzerschlüssel gesetzt ist.
Was könnte die Lösung für dieses Problem sein?
EDIT:
Dies ist die Mutation ist, die Firebase nennt und setzt der Benutzer-Schlüssel:
updateSession(state) {
auth.onAuthStateChanged((user) => {
if (user) {
state.user.key = user.uid
}
})
}
Hier ist die Aktion:
UPDATE_SESSION({ commit }) {
commit('updateSession')
}
Ich nenne die Aktion in Meine Wurzelkomponente (App.vue):
beforeCreate() {
this.$store.dispatch('UPDATE_SESSION')
}
EDIT 2:
Jetzt Array meine Routen:
routes: [
{ path: '/', component: Secret },
{ path: '/new', component: Authentication }
]
Ein Aufruf von Feuerbasis api den Benutzerschlüssel ist ein asynchroner Aufruf zu setzen, vielleicht die 'beforeCreate()' in Ihrer Authentifizierungsseite, wo umleiten Sie auf die geheime Seite wird, bevor die Benutzer-Taste aufgerufen zu werden ist im Laden eingestellt. So können Sie den Code der Mutation zeigen, wo Sie den Benutzerschlüssel setzen, indem Sie einen Anruf an Firebase senden –
Sie zeigen eine Mutation, aber eine Aktion in App.vue schicken –
Also Sie geheime Komponente ist die Root-URL ('/'), Ist Ihre Authentifizierungsseite eine Anmeldeseite und nachdem der Benutzer sich angemeldet hat, möchten Sie ihn zur geheimen Seite weiterleiten? –