【问题标题】:Dynamic Group Security in Firebase StorageFirebase 存储中的动态组安全性
【发布时间】:2017-04-12 08:55:41
【问题描述】:
我查看了 Firebase Storage 组安全性的文档,其中建议使用自定义令牌或在文件元数据中包含组信息,但是,当用户离开组时,我不希望更新元数据在每个文件中或必须创建一个新文件夹并更新组令牌信息。
如果这是实时数据库,我会检查用户是否仍然是组成员。我可以探索这些方面的更优雅的解决方案吗?
非常感谢
【问题讨论】:
标签:
firebase
firebase-authentication
firebase-security
firebase-storage
【解决方案1】:
是的,使用自定义令牌,您可以将其他属性与用户相关联。诀窍是当您为给定的用户 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();
}