如何在Firebase中实现自定义索赔存储的最大化? [英] How to mazimize custom claims storage in Firebase?

本文介绍了如何在Firebase中实现自定义索赔存储的最大化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当前正在使用自定义声明在我的Firebase应用程序中存储基于项目的权限。 然而,由于项目很多,我很快就达到了1000b的限制。这款应用的性质意味着用户将创建数百个项目,如果不是数千个项目的话。

有人知道如何绕过这一大小限制而不求助于将权限存储在rtdb中(这意味着权限不能在整个Google生态系统中访问,例如存储)。

我发现了this answer,这意味着我可以以某种方式存储单字节密钥。虽然我的值已经是单个字符,但我的密钥是UUID。我将如何实现压缩这些键?-以某种方式将单个字节映射到UUID?我当前正在使用对客户端、云函数和数据库规则的声明。

我正在考虑的另一种选择是使用自定义JWT令牌,因为据我所知,这些令牌可能没有相同的声明大小限制。

如有任何帮助,我们将不胜感激!

推荐答案

每个请求都会将自定义声明从客户端发送到服务器。我会认真重新考虑尝试向每个请求添加超过默认限制约1K的内容,事实上,通常会在此之前寻找其他方法。

与其存储单个项目ID,不如考虑是否有办法将这些ID转换为一组更有限的角色。这可能是一个有损失的操作,您会丢失现有模型的一些细微差别。对于这些差异,您可以考虑接受它们,或者将它们作为(小得多的)自定义声明集再次编码到令牌中。

如果这两种方法都不可行,惯用的方法是将ACL存储到辅助系统(如您提到的实时数据库)中并在那里进行查找。但是(正如您所提到的),您不能从存储安全规则中进行这样的查找,因此您必须在一个定制的API中包装(读取)对存储的访问。对于写入操作,您可以考虑允许更广泛的用户使用它们,并使用云功能(或定期进程)来清理流氓用户的上传。

这篇关于如何在Firebase中实现自定义索赔存储的最大化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆