私と同様の問題があったことは知っていますが、Firebase を適切に保護する方法についてはまだ少し困惑しています。
まず、私は EmberFire を使用しています。次に、アカウント管理に Firebase のメール/パスワード認証を使用しています。私のアカウントはそれぞれビジネスを表しています。現在認証されているビジネスが自分のデータにのみアクセスできるようにしたいのですが。最初は、次のデータ構造を使用することを考えていました。
+ businesses
- uid-1
- uid-2
- uid-3
... uid は、Firebase のメール/パスワード認証によってユーザーに割り当てられたものです。次に、次のセキュリティ ルールを使用します。
{
"rules": {
"businesses": {
"$user_id": {
".read": "$user_id === auth.uid",
".write": "$user_id === auth.uid"
}
}
}
}
以上のことから、2 つの質問があります。
- それはうまくいきますか?(この投稿に基づいていることは間違いありません)
- もしそうなら、EmberFire が生成したものではなく、自分の ID を使用できるようにするにはどうすればよいですか
push()
。
UPDATE EmberFireに関して、モデルをFirebaseに保存するために使用しているコードは次のとおりです。
var business = _this.store.createRecord('business', {
uid: userData.uid,
businessName: _this.get('businessName'),
firstName: _this.get('firstName'),
lastName: _this.get('lastName')
});
business.save().then(function(success) {
flashMessages.success('Your account has been created! Please login below.');
_this.transitionToRoute('login');
}, function(error) {
flashMessages.warning(error);
});
私が見ているのは、これらの作成されたオブジェクトのルート ノードが、Firebase によって生成された一意のタイムスタンプ ID になるということです。私の問題を解決するために、それを auth.uid に上書きしたいと思います。
前もって感謝します!ジェームズ