我正在尝试使用firebase安全性和身份验证配置,并注意到了Simple Login Web教程。我可以通过javascript控制台运行auth.createUser()
来创建用户,但想知道我是否可以限制用户创建在服务器端完成。
我尝试将主机添加到Authorized Request Origins
并尝试删除localhost和127.0.0.1(未成功),但仍然可以从客户端创建用户。
理想情况下,我希望用户只能从客户端进行身份验证。 我错过了什么吗? (假设这可以在不退回到fb,twitter等集成的情况下完成)
由于
答案 0 :(得分:3)
简单登录旨在完全不使用服务器。如果您想阻止客户创建帐户,您需要使用custom login并自行推送。
但是,在大多数情况下,您可能不需要阻止在简单登录中创建帐户。您可以通过简单地阻止用户在Firebase中创建用户记录来实现相同的结果,并将security rules建立在此基础上。
例如,在服务器上创建新用户帐户时,我可以将用户配置文件创建为:
/user/$user_id/...
我可以允许用户使用以下规则写入自己的个人资料,但不能创建个人资料:
".write": "data.exists() && auth.uid === $user_id"
然后,为了控制对服务器上任何路径的访问,我可以按如下方式编写规则:
".read": "root.child('user/'+auth.uid).exists()"
由于只有服务器可以首先创建配置文件,因此有效地阻止了用户创建帐户。