0
votes

Firebase Auth est-il possible de limiter la connexion à certains utilisateurs?

Actuellement, j'ai mis en place une fonction de connexion avec Firestore.

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")
            }
        })


0 commentaires

4 Réponses :


0
votes

Vous pouvez bloquer les utilisateurs de la console Firebase en désactivant ces comptes dans la section d'authentification. text alt


1 commentaires

Bien que vous puissiez désactiver des comptes spécifiques dans la console Firebase, vous ne pouvez pas empêcher les comptes inconnus de vous inscrire / dans tout en permettant à des comptes connus de continuer. Ce n'est tout simplement pas la façon dont l'authentification Firebase fonctionne.



0
votes

Si vous avez une connexion par courrier électronique / mot de passe activée, vous ne pouvez pas empêcher les gens d'essayer de créer des comptes et de vous connecter. Qu'est-ce que vous avez suggéré dans votre question n'est pas vraiment "Sécurité" car le code client peut être compromis. et contourné. Cependant, vous pouvez utiliser des règles de sécurité pour déterminer qui peut réellement accéder à votre base de données. Depuis que vous avez marqué ce Google-Cloud-Fireestore, je suppose que c'est ce que vous utilisez.

Firestore a règles de sécurité que vous pouvez utiliser pour déterminer qui a accès à quelles données. Pour un panneau d'administration où vous faites confiance à un certain ensemble de comptes sous votre contrôle (que vous pouvez créer vous-même vous-même vous-même), vous pouvez simplement les blanchir dans vos règles. En supposant que vous ayez une liste d'Uids, la chose la plus facile à faire, si vous leur faites confiance, tout autant avec toutes les actions de la base de données, vous donnez simplement tout accès complet: P>

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


1 commentaires

"Vous pouvez arrêter" => "Vous ne pouvez pas arrêter"?



0
votes

Dans votre application, ne donnez pas la possibilité de créer un nouvel utilisateur. Gardez uniquement votre application chausgée pour vous connecter avec courrier électronique et mot de passe.

Vous CAM créez manuellement des utilisateurs sur la console Web Firebase.

De cette façon, seuls les utilisateurs que vous avez créés pourra vous connecter.


1 commentaires

S'il vous plaît écrivez en utilisant un bon anglais et grammaire



0
votes

Elaborer un peu sur la réponse de Doug ci-dessus, j'ai trouvé quelque chose comme ça utile:

  1. Créer une collection (supposant Fireestore) appelée cms_users ou similaire où vous conserverez les utilisateurs qui devraient pouvoir accéder à l'application. Je stocke également des autorisations plus granulaires sur la table.
  2. Créez une fonction de règle Firestore qui obtiendra si l'utilisateur demandeur apparaît ou non dans cette table, par exemple. fonction getcmsuer () {return get (/ bases de données / $ (base de données) / Documents / CMS_USERS / $ (Demande.Auth.UID)); }
  3. Créer une règle garantissant que la collection est uniquement lisible par les utilisateurs qui se trouvent dans cette collection: match / phoenixcms_users / {userid} {autoriser la lecture: Si getcmsuser ()! = null; }
  4. et maintenant, par exemple, si vous avez des données que vous souhaitez limiter lire / écrit uniquement à ces utilisateurs, quelque chose comme:

    match / cms_secret_collection / {document = **} {autoriser la lecture: si getcmsuser ()! = null; Autoriser l'écriture: si getcmsuser ()! = null && getcmsuser (). Data.permissionLevel dans ["propriétaire", "admin"]; }

    Dans l'exemple ci-dessus, vous pouvez voir que tous les utilisateurs «CMS» peuvent afficher les données, mais seuls certains utilisateurs de CMS avec le propriétaire ou l'autorisation d'administration peuvent écrire les données.


0 commentaires