Как использовать firebase с правилами чтения и записи как ложными - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над проектом и следовал нескольким учебникам, чтобы изучить и создать приложение.Но все они меняют правила чтения и записи Firebase на true, что небезопасно.например, они меняют

{
  "rules": {
    ".read": false,
    ".write": false
  }
}

на

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Это дает доступ любому желающему читать и записывать данные сервера, которые в любом случае небезопасны.И поэтому я изменил это на false и теперь я не могу зарегистрировать пользователя в Firebase, который выдает ошибку «Permission Denied.Так что я должен сделать, чтобы получить разрешение сейчас.

Ранее я использовал этот код для регистрации пользователя в Firebase, который сейчас не работает.

mFirebaseAuth.createUserWithEmailAndPassword(editEmail.getText().toString(), editPass.getText().toString()).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                    @Override
                    public void onSuccess(AuthResult authResult) {

                        //Saving User to Database

                        User user = new User();
                        user.setEmail(editEmail.getText().toString());
                        user.setName(editName.getText().toString());
                        user.setPassword(editPass.getText().toString());
                        user.setPhone(editPhone.getText().toString());


                        users.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(user).addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void aVoid) {
                                waitingdialog.dismiss();
                                Snackbar.make(rootLayout, "Registration Successful", Snackbar.LENGTH_SHORT).show();
                                return;
                            }
                        }).addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                waitingdialog.dismiss();
                                Snackbar.make(rootLayout, "Registration Failed" + e.getMessage(), Snackbar.LENGTH_LONG).show();
                                return;
                            }
                        });
                    }
                });

1 Ответ

0 голосов
/ 28 мая 2018

По этой причине в Firebase существуют разные правила, и регистрация пользователя в базе данных зависит от этих правил. Например, Firebase предлагает четыре правила

по умолчанию

Правила по умолчанию требуют Аутентификация .Они предоставляют полный доступ для чтения и записи только авторизованным пользователям вашего приложения.Они полезны, если вы хотите, чтобы данные были открыты для всех пользователей вашего приложения, но не хотите, чтобы они были открыты для всего мира

// These rules require authentication
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

как Public

Во время разработки,вы можете использовать публичные правила вместо правил по умолчанию, чтобы сделать ваши файлы общедоступными и доступными для записи.Это может быть полезно для создания прототипов, так как вы можете начать работу без настройки Аутентификация .Этот уровень доступа означает, что любой может читать или писать в вашу базу данных.Вы должны настроить более безопасные правила перед запуском приложения.

// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

от имени пользователя

Вот пример правила, которое дает каждому аутентифицированному пользователю персональный узел в /users / $ user_id где $ user_id - идентификатор пользователя, полученный с помощью Authentication .Это общий сценарий для любых приложений, которые имеют данные, частные для пользователя.

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

как личное Частные правила запрещают пользователям доступ к вашей базе данных для чтения и записи.С этими правилами вы можете получить доступ к базе данных только через консоль Firebase.

// These rules don't allow anyone read or write access to your database
{
  "rules": {
    ".read": false,
    ".write": false
  }
}

Для регистрации пользователя в базе данных, когда права на чтение и запись как ложные, дают вам только разрешение на редактирование и чтение данных изКонсоль Firebase.

...