Firebase实时数据库安全规则中的auth.uid和auth.token.sub有什么区别

问题描述:

Firebase实时数据库安全规则中的auth.uidauth.token.sub有什么区别?Firebase实时数据库安全规则中的auth.uid和auth.token.sub有什么区别

我假设他们是相同的(用户只有1个用户ID),但他们有不同的描述,很想知道一个明确的答案。

auth.uid:唯一的用户ID,保证在所有提供者中唯一。

auth.token.sub:用户的Firebase UID。这在一个项目中是独一无二的。

干杯

它们完全一样。提供了auth.uid用于向后兼容(auth.token并未用于存在于安全规则中)并且易于使用:sub对于ID而言不是一个通常理解的术语,而uid有点易于理解,而且您也不会必须潜入令牌内容。

auth.token.sub是在令牌的ID编码。 Firebase Admin SDK具有用于验证和解码ID令牌的内置方法。如果所提供的ID令牌具有正确的格式,未过期并且被正确签名,则该方法返回已解码的ID令牌。您可以从解码的令牌中获取用户或设备的uid。

所以这意味着在token.sub中你有用户的uid。但是,如果没有sdk,你不能看到真正的价值原因不是解码。这是为了安全。

如果你想使用它,你需要用例如verifyIdToken()方法解码。对Node.js的

// idToken comes from the client app (shown above) 

admin.auth().verifyIdToken(idToken) 
    .then(function(decodedToken) { 
    var uid = decodedToken.uid; 
    // ... 
    }).catch(function(error) { 
    // Handle error 
    }); 

这里https://firebase.google.com/docs/auth/admin/verify-id-tokens

希望链接是有帮助的。