1

私はチャット プラグインを開発しています。ユーザーには、オペレーターとビジターの 2 種類があります。ただし、ユーザーを追加できません。

これが私のセキュリティルールです:

{
  "rules": {
    // By default, make all data private unless specified otherwise.
    ".read": "auth != null",
    ".write": "auth != null",

    // Only operators or user itself can update their data
    "users": {
      "$user_id": {
        ".read": "auth != null && ($user_id === auth.user_id || auth.operator === true)",
        ".write": "auth != null && ($user_id === auth.user_id || auth.operator === true)",
        ".validate": "($user_id === newData.child('user_id').val() && newData.hasChildren(['name', 'type', 'status']))"
      }
    }    
  }
}

チャット コンソールで Firebase DB にユーザーを追加しているときに、これらのログ メッセージを受け取りました。

Authenticated successfully with payload: Object {user_id: 112, is_operator: true}
Auth expires at: Thu Aug 15 2013 20:12:22 GMT+0300 (GTB Daylight Time)
FIREBASE: Attempt to write {"type":"operator","name":"op","user_id":112} to /users/operators/112 with auth={"user_id":112,"is_operator":true}
FIREBASE:   /:.write: "auth != null"
FIREBASE:       => true
FIREBASE:   /users/operators:.validate: "($user_id === newData.child('user_id').val() && newData.hasChildren(['name', 'type', 'status']))"
FIREBASE:       => false
FIREBASE: Validation failed.
FIREBASE: Write was denied.
FIREBASE WARNING: set at /users/operators/112 failed: permission_denied
(!) ERROR: Error: PERMISSION_DENIED :: auth() function while creating user

この問題を解決するにはどうすればよいですか?

解決

私は間違っていました$user_idauth.user_id「.validate」部分にある必要があります。

".validate": "(auth.user_id === newData.child('user_id').val() && newData.hasChildren(['name', 'type', 'status']))"
4

1 に答える 1

1

$user_id間違っている。auth.user_id次の".validate"部分にある必要があります。

".validate": "(auth.user_id === newData.child('user_id').val() && newData.hasChildren(['name', 'type', 'status']))"
于 2014-08-15T22:19:27.920 に答える