有没有办法在Firebase用户中锁定displayName?

时间:2017-10-02 16:30:05

标签: firebase firebase-authentication firebase-security

我正在努力解决firebase auth中缺少用户名属性的问题,并且正在考虑在UserInfo.displayName属性中的用户配置文件中存储用户名。这是必要的,这样我就可以在安全规则中将显示名称设为auth.token.name,然后将其用作用户名。

但是,看起来似乎没有锁定updateProfile方法,因此可以想象用户可以使用其令牌破解api并直接调用updateProfile将该显示名称更改为其他人的用户名。 https://firebase.google.com/docs/reference/js/firebase.User#updateProfile

有没有办法可以锁定displayName,使其在客户端或注册后无法编辑?

2 个答案:

答案 0 :(得分:1)

是的,有一种方法可以使用Firebase Security Rules实现此目的。您不仅可以为用户名执行此操作,还可以为所需的所有字段执行此操作。请查看您需要在相应级别的安全规则中添加的以下代码行。

".write": "!data.exists() || !newData.exists()"

这意味着you can write as long as old data or new data does not exist。换句话说,如果数据已经存在,则无法写入。

希望它有所帮助。

答案 1 :(得分:0)

firebaser here

无法将用户个人资料更改限制为初始用户注册。该个人资料中的公共属性(目前为displayNamephotoURL)是要更改的用户。

如果您想要更好地控制为用户保留的属性,则必须将它们保存在辅助系统中,例如Alex在其答案中提到的数据库。