【问题标题】:In firebase authentication, is there a way to remove a custom claim?在 firebase 身份验证中,有没有办法删除自定义声明?
【发布时间】:2018-06-18 22:02:21
【问题描述】:

为了设置自定义声明,使用:

admin.auth().setCustomUserClaims(uid,{claim:value});

确实存在

admin.auth().updateUser(uid,{claim:value});

...但我不太清楚这两者有何不同,而且似乎都没有真正删除以前应用的自定义声明。

【问题讨论】:

    标签: javascript firebase firebase-authentication firebase-admin


    【解决方案1】:

    来自documentation

    您可以通过为 customClaims 传递 null 来删除用户的自定义声明。

    所以这应该删除声明:

    admin.auth().updateUser(uid, {claim: null});
    

    【讨论】:

    • 太快了! Jen Person 是对的,你是 firebase stackoverflowage 之王。谢谢!
    • 不客气。在这种情况下,我的工作只不过是打开有关自定义声明的链接页面,搜索remove(没有相关命中),然后搜索delete
    • 使用最新的管理SDK,我不得不使用admin.auth().setCustomUserClaims(user.uid, null);
    • @FrankvanPuffelen 如果只需要删除众多声明中的一项怎么办?全读后写?
    • 是的,没有 API 可以只发送更新,所以在内存中读取、修改、写入就是过程。
    【解决方案2】:

    @FrankvanPuffelen's answer 在他回答时无疑是正确的,但是,就目前而言(2020 年 11 月 30 日),the updateUser method 的第二个参数,称为 properties,是一个 UpdateRequest interface,即没有claim 属性。

    设置自定义声明现已移至the setCustomUserClaims method

    你通过做...来设置它们

    admin.auth().setCustomUserClaims(uid, { admin: true });
    

    ...删除一个对象的唯一方法是将整个对象设置为null。如果有多个声明,似乎没有办法选择性地删除一个声明。

    admin.auth().setCustomUserClaims(uid, null); 
    

    【讨论】:

      【解决方案3】:

      我认为您不能为此使用 updateUser,我认为您仍然需要调用

      admin.auth().setCustomUserClaims(uid, {claim:null}); 
      

      【讨论】:

      • 这将声明属性设置为 null 但似乎没有将其删除
      • @Fakeer 我认为(尽管我最近才开始使用 firebase)旧方法是使用 updateUser 并且 claim 属性似乎已用于设置自定义声明,但这似乎现在确实发生了变化,新方法是使用setCustomUserClaims,但是,在后一种情况下,不再需要claim属性,设置claim: null实际上设置了一个名为claim的自定义声明,其值为@987654328而是@。
      猜你喜欢
      • 2019-08-15
      • 2021-06-30
      • 1970-01-01
      • 2020-06-28
      • 2020-04-01
      • 2022-12-10
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多