firebase auth возможно ли ограничить вход в систему для некоторых пользователей? - PullRequest
0 голосов
/ 22 апреля 2020

В настоящее время я реализовал функцию входа в систему с помощью firestore.

btnLogin.addEventListener('click', e => {
            // Get email and password
            const email = txtEmail.value;
            const pass = txtPassword.value;
            const auth = firebase.auth();
            // Sign in
            const promise = auth.signInWithEmailAndPassword(email, pass);
            promise.catch(e => console.log(e.message));
        })

Мне интересно, можно ли ограничить вход в систему только определенным письмом, я думаю, что единственный способ - вручную проверять почту до аутентификации - но интересно, есть ли официальные способы сделать это. Даже расширенный для более чем одного электронного письма.

Мое временное решение (?)

btnLogin.addEventListener('click', e => {
            // Get email and password
            const email = txtEmail.value;
            const pass = txtPassword.value;
            const auth = firebase.auth();
            // Sign in
            if (email == "email_desired" | email == "email_desired2"){
                const promise = auth.signInWithEmailAndPassword(email, pass);
                promise.catch(e => console.log(e.message));
            }
            else{
                console.log("Email is not accepted at login")
            }
        })

Цель, которую я делаю, состоит в том, чтобы разрешить только постоянным пользователям доступ к панели входа администратора.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Если у вас включен вход в систему по электронной почте / паролю, вы не можете помешать людям пытаться создавать учетные записи и входить в систему. То, что вы предложили в своем вопросе, на самом деле не "безопасность", так как код клиента может быть скомпрометирован и обошел. Однако вы можете использовать правила безопасности, чтобы определить, кто действительно может получить доступ к вашей базе данных. Поскольку вы пометили этот Google-Cloud-FireStore, я предполагаю, что это то, что вы используете.

Firestore имеет правил безопасности , которые вы можете использовать, чтобы определить, кто имеет доступ к каким данным. Для панели администратора, в которой вы доверяете определенному набору учетных записей (которые вы можете создать вручную), вы можете просто внести их в белый список в своих правилах. Предполагая, что у вас есть список UID, проще всего сделать, если вы доверяете им все действия в базе данных, просто предоставьте им полный доступ:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid in ['uid1', 'uid2', 'uid3'];
    }
  }
}

Возможно, вы захотите что-то более сложное в этом случае вам действительно придется изучить систему правил безопасности и максимально эффективно ее использовать. Или вы можете направить все действия пользователя через управляемый вами сервер и проверить маркер Firebase Auth ID пользователя с помощью Firebase Admin SDK перед совершением действия.

0 голосов
/ 22 апреля 2020

Вы можете заблокировать этих пользователей в консоли Firebase, отключив эти учетные записи в разделе аутентификации. alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...