我正在努力解决firebase auth中缺少用户名属性的问题,并且正在考虑在UserInfo.displayName
属性中的用户配置文件中存储用户名。这是必要的,这样我就可以在安全规则中将显示名称设为auth.token.name
,然后将其用作用户名。
但是,看起来似乎没有锁定updateProfile方法,因此可以想象用户可以使用其令牌破解api并直接调用updateProfile将该显示名称更改为其他人的用户名。 https://firebase.google.com/docs/reference/js/firebase.User#updateProfile
有没有办法可以锁定displayName,使其在客户端或注册后无法编辑?
答案 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
无法将用户个人资料更改限制为初始用户注册。该个人资料中的公共属性(目前为displayName
和photoURL
)是要更改的用户。
如果您想要更好地控制为用户保留的属性,则必须将它们保存在辅助系统中,例如Alex在其答案中提到的数据库。