【问题标题】:does a Firebase instance DecodedIdToken have custom claims?Firebase 实例 DecodedIdToken 是否有自定义声明?
【发布时间】:2020-07-09 14:19:53
【问题描述】:

我们可以像这样在前端获取用户的自定义声明:

const { claims } = await firebase.auth().currentUser.getIdTokenResult()

但是,在 Cloud Functions 中,每个可调用的 Cloud Function 都有一个上下文:

context: functions.https.CallableContext

有了这个,我们可以像这样访问请求用户的“用户令牌”:

context.auth.token

此令牌是 DecodedIdToken(请参阅链接以获取参考文档)

但是,我想知道我是否可以像这样访问该用户对 DecodedIdToken 的自定义声明:

const { claims } = context.auth.token

因为文档没有说明自定义声明...

【问题讨论】:

    标签: firebase firebase-authentication google-cloud-functions


    【解决方案1】:

    按照我阅读文档的方式,我会假设它包含自定义声明。看看它的“可索引”功能:

    可索引

    [key: string]: any
    

    表示解码的 Firebase ID 令牌的接口,从 verifyIdToken() 方法。

    [key: string]: any 是 TypeScript,表示它支持一般字符串查找,以及单独详述的特定属性。这表明您应该能够在对象中找到(可能)自定义声明的其他项目。

    这也很明显,它与verifyIdToken() 返回的值相同,这是您在使用 Admin SDK 时获得自定义声明的方式。所以,我建议只是尝试一下。如果它没有按您预期的方式工作,file a feature request with Firebase support

    【讨论】:

    • 我会试着在这里告诉你
    • 根据我的发现,它没有自定义声明,并且需要为这些声明进行单独的 API 调用。如果可以,请将此整合到您的答案中!
    猜你喜欢
    • 2020-02-02
    • 2021-01-18
    • 2021-12-31
    • 2021-09-20
    • 1970-01-01
    • 2019-07-02
    • 2020-09-18
    • 2019-03-14
    • 1970-01-01
    相关资源
    最近更新 更多