异步新的Vue()等待初始身份验证

时间:2018-06-24 21:37:48

标签: firebase asynchronous vue.js firebase-authentication

我对Vue相当陌生,目前正在设置一个将Firebase身份验证和Firestore用于基本RBAC的应用程序。 为了防止未经授权的用户进入路由,我的路由器使用了自定义的AuthGuard来检查本地用户角色(后端实现了类似的规则)

export default new Router({
  routes: [
    {
      path: '/users',
      name: 'Users',
      component: Users,
      beforeEnter: AuthGuard(user => user.uid && user.roles.admin)
    }
..
]})

此设置的一个问题是,无法向人们发送指向受保护页面的链接。身份验证防护措施阻止他们加载页面,因为在初始化Vue应用时未设置本地user

所以我想出了一个 方法,通过构造main.js来延迟Vue App的创建:

import Vue from 'vue'
...
init()
.then(() => new Vue(..)

init函数期间,我正在等待firebase.auth().onAuthStateChanged触发并告诉我用户是否具有有效令牌。它确实起作用,但感觉不正确。

异步创建新的Vue应用程序可以吗?是否有更好的方法,例如在路由上延迟加载身份验证保护或其他方法?

1 个答案:

答案 0 :(得分:1)

我对Vue和Azure Active Directory身份验证也这样做,这似乎是最好的方法。

请参阅Miguels答案:https://stackoverflow.com/a/45899653/2703700

您正在寻找答案吗?

相关问题