2016-03-24 15 views
0

は、この問題に捕まってしまった:私は、ユーザーが、私は次の構造を計画している理由のため、firebaseを使用して、私のWebページ上で登録できるようにしたい:Firebaseは、ユーザーを追加が、任意の変更を無効に

users : { 
    user0 : { //user specific data }, 
    user1 : { //... } 
    ... 
} 

すべてが正常に動作します(書き込み、読書...)私はセキュリティルールを変更するまで。ユーザーを登録するだけで、自分のアカウントや他のユーザーアカウントを削除する権限を持たないようにしたいからです。しかし、私はそれに非常に役立つ何かを見つけることができませんでした。私は、ユーザーがだけ新しいアカウントを追加することができるように、ルールを設定する方法を思ったんだけど

{ 
"rules": { 
    "users" : { 
      ".read": true, 
      "$uid" : {    
      ".write": "auth !== null && auth.uid === $uid" 
     } 
    } 
} 
} 

:以下は、私が現在残されてるものです。

私は助けていただきありがとうございます!

Thaanks :)

編集:ここに私は私のポイントを明確にしますシミュレータを使用して、上記のルールを達成するために、多分、以下の例を望んでいたものです。

私がやりたいことは、ユーザを/ usersノードに登録させることです。したがって、シミュレータでCustom Authポイントを選択しました。

{provider: 'anonymous'、uid: '002a448c-30c0-4b87-a16b-f70dfebe3386'}私が選択した場合

さて、 "書き込みをシミュレート"、パス/ユーザーと次のキーと値のペアを与える:

{ "002a448c-30c0-4b87-a16b-f70dfebe3386":{ "1":{ "a": "b"}}}

以下のメッセージが表示されます(結果2を参照してください)。これは書き込みルールが許可されていないため、/ usersに書き込むことができないことを示しています。セキュリティルールの設定を変更する方法はわかりませんが、私は上記のようにキー値のペアを書くことができるように変更する方法はわかりませんが、各ユーザーがそこに書き込むことを許可します。私。 uid:002a448c-30c0-4b87-a16b-f70dfebe3386のユーザーは、認証されている限り、上記のルールで対応する値に書き込むことができます(Result_1を参照)。

など。彼のエントリーにCuston Auth認証ユーザー書き込み:

{プロバイダー: 'anonymous'、uid: '002a448c-30c0-4b87-a16b-f70dfebe3386'}

前回と同じです。今、パスの "書き込みをシミュレートする":

/ユーザ/ 002a448c-30c0-4b87-a16b-f70dfebe3386

Result_1:{ "4" を書き込む

試み:{ "名前"「フレッド"}} /ユーザー/ AUTH = {と002a448c-30c0-4b87-a16b-f70dfebe3386に" プロバイダ ":" 匿名」、 "UID": "002a448c-30c0-4b87-a16b-f70dfebe3386"}

/

/users

/users 02a448c-30c0-4b87-a16b-f70dfebe3386:.write: "auth!== null & & auth。UID === $のUID」=>真

書き込みが許可された

Result_2:/ユーザー・ノード上にユーザーを書くことは、すなわち何も登録は可能ではないと私は追加できるようにするためにここにしたい失敗しました。ユーザから/ユーザへのユーザの変更/削除はできません。下記のシミュレータ出力を参照してください。

{"002a448c-30c0-4b87-a16b-f70dfebe3386":{"1":{"a ":" B "}}}に/ AUTH = {持つユーザ" プロバイダ ":" 匿名」、 "UID": "002a448c-30c0-4b87-a16b-f70dfebe3386"}

/

/usersいいえ、操作を許可する書き込みルールはありません。

書き込みが拒否されました。

答えて

0

許可カスケード - ユーザに/usersの許可を与えると、その許可を/users/$uidで削除することはできなくなります。

{ 
    "rules": { 
    "users" : { 
     ".read": true, 
     "$uid" : { 
      ".write": "auth !== null && auth.uid === $uid" 
     } 
    } 
    } 
} 
+0

フム、それ誰にする/ユーザー(カスタム認証モードとシミュレータ上でそれを試してみました)書き込むことができます。

ソリューションは、最も低いレベルにのみ付与許可にあなたのケースではそうです。ですから、どのようにして/ userにuidを追加すればよいでしょうか?さらに、 ".read":trueの場合、他のユーザーは、他のユーザーからも、そうでないはずのものを読むことができます。(私は正直なところ、firebaseがCRUD操作にルールを入れることを選択しなかった理由は分かりませんが、物語... – Tukk

+0

私の '.write'ルールでは誰でも自分の特定のノードに書くことができます。' uid' 'Tukk'でシミュレータを認証して'/users/Tukk'に書き込むと許可されます。 –

+0

はいそれは正しいですが、ノードTukkが既に存在する場合のみです。存在しない場合は、firebaseの管理者としてログインする以外に作成する可能性はなく、手動で行います。/users。申し訳ありませんが、明確に指摘していない場合 – Tukk

関連する問題