在用户使用FirebaseSimpleLogin成功注册后,我正在使用Backfire Collection尝试向Firebase中的自定义“用户”集合添加新用户行。
以下是我的安全规则:
"users": {
"$user_id": {
".read": "auth.id === $user_id",
".write": "(!data.exists() && (newData.child('id').val() + '' === auth.id)) || ($user_id === auth.id)"
}
安全规则应该完成以下任务:
允许新注册的用户创建新的“用户”行,因此他的个人信息存储在“http://myurl.firebase.com/users/1/”网址下。
登录用户只能读取自己的用户行。
登录用户只能更新自己的用户行。
但是,我使用以下代码拒绝了权限:
var FireUsers = Backbone.Firebase.Collection.extend({
model : Backbone.Model,
firebase: new Firebase(FirebaseURL + '/users/')
}),
fireUsers = new FireUsers();
fireUsers.add(newUserObj);
我在模拟器中尝试了它,并且我能够满足上述3个条件的唯一方法是将安全规则设置为“auth!= null”,这显然不是理想的。
感谢任何帮助!
托尼
答案 0 :(得分:0)
如果登录用户只能读取users表中的行,则无法为整个用户集创建集合(因为这意味着每个人都可以读取users表)。为特定URL创建Backbone.Firebase.Collection
的新实例将立即尝试下载该URL上的所有数据,由于安全规则,这些数据将失败。
我建议改为使用Backbone.Firebase.Model
,并直接在包含用户ID的网址上为用户创建新实例。