我对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应用程序可以吗?是否有更好的方法,例如在路由上延迟加载身份验证保护或其他方法?
答案 0 :(得分:1)
我对Vue和Azure Active Directory身份验证也这样做,这似乎是最好的方法。
请参阅Miguels答案:https://stackoverflow.com/a/45899653/2703700
您正在寻找答案吗?