Vue路由器firebase auth guard不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue路由器firebase auth guard不起作用相关的知识,希望对你有一定的参考价值。

我有一个简单的路由保护与firebase身份验证,但它不能正常工作。

下面的代码不会呈现任何内容,也不会显示任何控制台错误。

所以,我现在没有在我的应用程序中实现任何auth系统,所以,它假设重定向到/ auth route并显示Auth.vue内容,但它没有显示任何内容,只是一个空白页面。

有关如何解决它的任何想法?

Auth.vue

<template>
  <div class="auth">
    <h1>Auth</h1>
  </div>
</template>

Home.vue

<template>
  <div class="home">
    <h1>Home</h1>
  </div>
</template>

router.js

import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import Auth from './views/Auth.vue'
import firebase from 'firebase/app'
import 'firebase/auth'

Vue.use(Router)

let router = new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home,
      meta: {
        auth: true
      }
    },
    {
      path: '/auth',
      name: 'auth',
      component: Auth
    }
  ]
});

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.auth)) {
    firebase.auth().onAuthStateChanged(function(user) {
      if (!user) {
        next('/auth');
      } else {
        next();
      }
    });
  } else {
    next();
  }
});

export default router
答案

尝试

if(!user) { next({ path: '/auth' }) }

代替

if (!user) { next('/auth'); }

以上是关于Vue路由器firebase auth guard不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Auth 检查与 Vue-router

Laravel auth()->guard() 使用 vue js 返回 null

在 Vue.js/Firebase 登录认证界面设置 route-guard

Vue + Pinia + Firebase 身份验证:在 Route Guard 之前获取 currentUser

Firebase onAuthStateChanged 和 Navigation Guards 的模式 - Quasar 应用

Laravel auth登录之怎么通过guard流程