Eze*_*eja 2 javascript firebase firebase-authentication angularfire2
我正在使用 angularfire2 使用 Angular6 应用程序。我在用户创建中将角色设置为自定义声明,但它似乎没有传播。
创建用户时,我将用户 ID、业务 ID 和角色发送到云功能:
出价 > 商业 ID
角色 > 角色
req.body.uid > 用户 ID
const customClaims = {
roles: { [bid]: urole }
}
admin.auth().setCustomUserClaims(req.body.uid, customClaims)
.then(result => {
res
.status(200)
.send()
})
Run Code Online (Sandbox Code Playgroud)
问题是当对云函数的调用完成时,我想将用户重定向到需要用户设置自定义声明的路由,但它失败了。经过一些调试,我发现如果运行:
this.angularFireAuth.auth.currentUser.getIdTokenResult(true).then(result => {
return result.claims.roles
})
Run Code Online (Sandbox Code Playgroud)
在调用云函数“result.claims.roles”之后立即未定义,但是如果我刷新页面,“result.claims.roles”就会有我之前设置的数据。
我已经尝试过 reload 方法和 getIdToken(true) 但我遇到了同样的问题。
有没有办法避免刷新页面并获得自定义声明?
谢谢!
当用户登录时,他们会获得一个有效期约为一个小时的 ID 令牌。如果您设置自定义声明,他们的个人资料会立即更新,但他们的 ID 令牌不会自动更新。因此,您需要刷新他们的 ID 令牌以获取新的自定义声明。
据我所知,这个 ID 令牌只有getIdTokenResult在它过期时才会通过调用来刷新。如果是这样的原因,调用user.reload()和再获取ID令牌应该给你更新的要求。
| 归档时间: |
|
| 查看次数: |
2161 次 |
| 最近记录: |