相关疑难解决方法(0)

Firebase 自定义声明如何设置?

我正在为 firebase 自定义声明而苦苦挣扎。

我已经测试了很多方法都不起作用。显然,我错过了概念本身的一些重要内容。

所以我回到了根源。来自 google 示例的此脚本应该对新创建的用户应用海关规则

exports.processSignUp = functions.auth.user().onCreate(event => {
  const user = event.data; // The Firebase user.
  const customClaims = {
      param: true,
      accessLevel: 9
    };
  // Set custom user claims on this newly created user.
  return admin.auth().setCustomUserClaims(user.uid, customClaims)   

});
Run Code Online (Sandbox Code Playgroud)

然后在客户端上,我检查结果

firebase.auth().currentUser.getIdTokenResult()
                .then((idTokenResult) => {
                    // Confirm the user is an Admin.
                    console.log(idTokenResult.claims)
                    if (!!idTokenResult.claims.param) {
                    // Show admin UI.
                    console.log("param")
                    } else {
                    // Show regular user UI.
                    console.log("no param")
                    }
                })
                .catch((error) => {
                    console.log(error); …
Run Code Online (Sandbox Code Playgroud)

javascript firebase-authentication google-cloud-functions

6
推荐指数
2
解决办法
6442
查看次数

Firebase 自定义声明不会传播

我正在使用 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) 但我遇到了同样的问题。

有没有办法避免刷新页面并获得自定义声明?

谢谢!

javascript firebase firebase-authentication angularfire2

2
推荐指数
1
解决办法
2161
查看次数