如何在Vue中使用Firebase身份验证

时间:2019-08-02 12:04:09

标签: javascript firebase vue.js vuex

我的问题是,由于onAuthStateChanged在安装componentm之后运行,因此路由器推送不起作用。

首先,我在vuex的store.js上进行了onAuthStateChanged。

// ./src/vuex/store.js

import { firebaseAuth } from "../firebase/firebaseAuth";

Vue.use(Vuex);

firebaseAuth.onAuthStateChanged(user => {
  if (user) {
    console.log(user);
    state.user = user;
  } else {
    state.user = null;
  }
});

const state = {
  user: null
};


其次,当我在登录组件处登录时。路由器中的signIn()推送效果很好。之后,当我单击登录时,由于有关访问的“ beforeCreate()”块,它不允许我访问“ /登录”。

<script>
import { firebaseAuth } from "../firebase/firebaseAuth";
import { mapGetters } from "vuex";

export default {
  name: "sighin",
  beforeCreate() {
    console.log(this.$store.state.user);
    if (this.$store.state.user) {
      this.$router.push("/");
    }
  },
  data() {
    return {
      email: "",
      password: ""
    };
  },
  computed: {
    ...mapGetters({ user: "getUser" })
  },
  methods: {
    signIn() {
      firebaseAuth.signInWithEmailAndPassword(this.email, this.password).then(
        user => {
          this.$router.push("/");
        },
        err => {
          alert("Oops. " + err.message);
        }
      );
    }
  }
};
</script>

但是现在出现了问题。当我使用重载直接在浏览器上访问“ / signin” URL时,登录组件的Create创建工作正常,然后onAuthStateChanged运行。因此,登录的this.router.push不起作用。我怎么解决这个问题?非常感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:0)

您可以在Public Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Application.Intersect(Target, Range("B:C")) Is Nothing Then InputNum End If End Sub 首次通话后立即启动vue应用。

onAuthStateChanged