我正在努力为我的应用程序设置适当的安全规则。
我正在编写的应用程序概述是,用户可以使用电子邮件和密码注册自己(我正在使用 Firebase Simple Login 完美地实现此功能)。一旦登录,用户就可以添加他们的待办事项。
angularFire('https://<firebase>/firebaseio.com/todos', $scope, 'todos');
而要针对任何用户添加新的待办事项,我只需要更新待办事项模型即可。
$scope.todos.push({
user: 'a@b.com',
todo: 'What to do?'
});
我正在使用这些安全规则来限制未注册用户添加任何待办事项:
{
"rules": {
".read": true,
"todos": {
".write": "auth != null",
".validate": "auth.email == newData.child('user').val()"
}
}
}
但它甚至不允许已验证用户编写任何数据并抛出错误,"FIREBASE WARNING: on() or once() for /todos failed: Error: permission_denied."
但是如果我在模拟器中添加以下数据,则可以按预期工作。
{user: "a@b.com", todo: 'What to do?'}
这是日志:
/todos:.write: "auth != null"
=> true
/todos:.validate: "auth.email == newData.child('user').val()"
=> true
/todos:.validate: "auth.email == newData.child('user').val()"
=> true
Write was allowed.
".validate": "auth.email == 'a@b.com'"
,其中a@b.com
是已注册的用户 - 这个方法可行,但是".validate": "'a@b.com' == newData.child('user').val()"
不行。是否有可能查看newData的内容? - codef0rmerangularFireAuth
进行身份验证,还是通过FirebaseSimpleLogin
手动进行身份验证? - Anant