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

时间:2016-12-01 21:08:37

标签: firebase firebase-realtime-database firebase-security

Firebase实时数据库安全规则中0 0 0 0 0 0 1 0 0 1 0 2 0 0 2 1 0 1 0 0 1 1 1 0 1 1 2 1 0 2 2 0 1 1 0 2 1 1 1 1 2 2 1 1 2 1 2 0 1 2 1 1 2 2 2 0 0 ..... auth.uid之间的区别是什么?

我认为它们是相同的(用户只有1个uid),但它们有不同的描述,很想知道明确的答案。

  

auth.token.sub:唯一的用户ID,保证在所有提供商中都是唯一的。

     

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

干杯

2 个答案:

答案 0 :(得分:3)

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

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

如果您想使用此功能,则需要使用// idToken comes from the client app (shown above) admin.auth().verifyIdToken(idToken) .then(function(decodedToken) { var uid = decodedToken.uid; // ... }).catch(function(error) { // Handle error }); 方法进行解码。

Node.js上的示例

parser.add_argument

此处链接https://firebase.google.com/docs/auth/admin/verify-id-tokens

希望有所帮助。

答案 1 :(得分:3)

它们完全一样。提供auth.uid是为了向后兼容(auth.token以前不存在于安全规则中)和易用性:sub不是ID的常用术语,而uid更容易理解,您不必深入了解令牌内容。