8

$authWithPasswordユーザーのログインには Firebaseメソッドを使用します。メソッドを使用$createUserしてユーザーの登録を作成し、成功したら /users/ パスのエントリを更新して、ユーザー名、uid、およびその他の詳細を保存します。ここにコードがあります

var myDataRef = new Firebase(baseURL + 'datalog/');
var refObj = $firebaseAuth(myDataRef);

refObj.$createUser({
    email: $scope.emailId,
    password: $scope.password
}).then(function(userData) {
    var UserUniqueUrl = new Firebase(baseURL + 'users/' + userData.uid + '/');
    UserUniqueUrl.set({
        'email': $scope.emailId,
        'username': $scope.username,
        'uid': userData.uid,
        'theme': 'default'
    }, function(error) {
        if (error) {
            console.log(error);
        } else {
            console.log('Successfully updated in user table');
        }
    });
}).catch(function(error) {
    if (error.code == 'EMAIL_TAKEN') {
        $scope.regStatusError = 'Email already registered!';
    } else {
        $scope.regStatusError = 'Unable to register! Try again later.';
    }
});

そして、これが私のセキュリティルールです

{
    "rules": {
        "users": {
            ".read": "auth != null",
            ".write": "auth != null"
        }
    }
}

ここで登録しようとすると、セキュリティ ルール".read": "auth != null"".write": "auth != null". ルールを".read": trueおよびに変更すると".write": true、登録は機能しますが、uid や電子メール ID などのユーザー データを誰でも見ることができてしまい、望ましくありません。ニーズに合わせてルールを変更するにはどうすればよいですか?

これは、私のユーザーテーブルがどのように見えるか ここに画像の説明を入力 です。ありがとう。

4

2 に答える 2

-3

ええ、ルールを次のように変更する必要があります

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

これで修正されるはずです

于 2016-06-18T20:40:39.050 に答える