【问题标题】:Access Firebase Custom Token claims from the Web SDK从 Web SDK 访问 Firebase 自定义令牌声明
【发布时间】:2017-09-05 20:23:57
【问题描述】:

如果我有一个带有某些声明的自定义令牌并使用它登录 Firebase,是否有任何方法可以使用 Web SDK 从应用内部访问这些声明?

例如,如果我的自定义令牌是这样的

{
 :iss => $service_account_email,
 :sub => $service_account_email,
 :aud => "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
 :iat => now_seconds,
 :exp => now_seconds+(60*60), # Maximum expiration time is one hour
 :uid => uid,
 :claims => {:premium_account => is_premium_account}
}

我想知道是否有类似(从应用程序内部):

firebase.auth.token.claims.premium_account

我在文档中没有找到类似的内容。

【问题讨论】:

标签: firebase firebase-authentication


【解决方案1】:

看起来你想要getIdTokenResult:

await firebase.auth().currentUser.getIdTokenResult()

【讨论】:

    【解决方案2】:

    claims 嵌入在令牌中。

    以下是在 Web 客户端上使用 jwt-decode 从令牌中提取声明的示例代码:

    import jwt_decode from './jwt-decode';
    
    firebase.auth().currentUser.getToken().then((token) => {
        console.log(token);
        console.log(jwt_decode(token));
    });
    

    【讨论】:

      【解决方案3】:

      这是关于它的文档:https://firebase.google.com/docs/auth/admin/custom-claims

      我认为它的要点是,一旦您通过后端代码(admin sdk 或 firebase 函数)向用户附加了自定义声明,您就可以对 currentUser 令牌进行 base64 解码。 该文档引用了一篇关于 javascript base64 解码的 mozilla 文章:https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

      您可以 JSON.parse 解码的令牌,您的自定义声明将显示在那里。文档非常好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-18
        • 2020-08-19
        • 2020-01-15
        • 2021-12-01
        • 2019-03-24
        • 2014-12-22
        • 2021-09-02
        相关资源
        最近更新 更多