我们正在将我们的Firebase应用与Twitter身份验证集成,并在数据库中的任何位置使用Twitter screen_name
作为我们主要的人类可读用户名。
在安全规则方面,这显然是一个缺点:我们不知道screen_name
,因为它不包含在auth.token
中。我们能做的是root.child('users').child($screen_name).child('uid').val() === auth.uid
。
将Twitter screen_name
纳入auth.token
安全规则上下文的唯一方法是通过自定义声明,对吧?这样做的首选方法是什么?人类可读用户名的其他模式建议?
答案 0 :(得分:2)
add custom claims to user tokens选项是Firebase身份验证的一个相对较新的补充。在此功能可用之前,在数据库中存储其他信息是完成许多方案的唯一方法。因此,您会发现大多数示例,问题和文档都显示了如何将其他信息存储在数据库中。
在令牌中存储其他声明具有许多优点。其中一些:
使用数据库存储其他信息也有一些优点:
如果您在安全规则中使用Twitter屏幕名称,则听起来很适合自定义声明。如果您还想在UI中显示用户的Twitter屏幕名称,您可能也希望将其存储在数据库中。