Firebase存储中的动态组安全性

时间:2016-11-28 15:13:59

标签: firebase firebase-authentication firebase-security firebase-storage

我已经查看了针对Firebase存储的群组安全的文档,其中建议使用自定义令牌或在文件元数据中包含组信息,但是,当用户离开组时,我理想情况下不希望更新元数据在每个文件中或必须创建新文件夹并更新组令牌信息。

如果这是实时数据库,我会检查用户是否仍然是组成员。我可以探索这些方面有更优雅的解决方案吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

是的,使用自定义令牌,您可以将其他属性与用户关联起来。诀窍是,当您为给定的用户ID创建自定义令牌时,您可以添加其他声明并使用它们来评估访问规则。在您的情况下,您可以在服务器上创建令牌时添加用户所属的组ID作为附加声明,用户使用该令牌从客户端应用程序登录。因此,无论何时用户离开您的组,他的组ID关联都将被删除,因此当您为该用户重新创建令牌时,您将不再在其他声明中关联组ID。 示例示例

public static String createCustomToken(String userId, Map<String, Object> additionalClaims) {
FirebaseOptions options = new FirebaseOptions.Builder()
.setServiceAccount(new FileInputStream(FIREBASE_ACCESS_FILE)).build();
FirebaseApp.initializeApp(options);
Task<String> customToken = FirebaseAuth.getInstance().createCustomToken(userId, additionalClaims);
return customToken.getResult().toString();
}