3
votes

Mot de passe protéger une page avec Firebase

Je construis un CMS avec Firebase, mais j'ai du mal à déterminer si ce dont j'ai besoin est possible ou si quelque chose me manque.

Ce dont j'ai besoin, c'est de pouvoir protéger une page par mot de passe uniquement et de me souvenir que ce navigateur a accès. Un compte d'utilisateur complet (utilisant l'authentification intégrée) est nécessaire pour modifier le contenu de la page, mais seul un mot de passe est nécessaire pour l'afficher.

Je sais que je peux utiliser le flux d'authentification avec le courrier électronique, mais je recherche l'éditeur pour pouvoir créer un mot de passe pour la visualisation uniquement.

Est-ce possible ou devrais-je chercher ailleurs?


0 commentaires

4 Réponses :


1
votes

L'authentification Firebase ne traite que les comptes d'utilisateurs authentifiés. Il ne traite pas de la simple protection par mot de passe du contenu.


0 commentaires

1
votes

C'est certainement possible, mais comme l'indique la réponse de Doug, vous devrez le faire en dehors des moyens normaux. Du haut de ma tête, la façon dont j'accomplirais cela est ...

  • Lorsqu'un utilisateur entre un mot de passe, il stocke le mot de passe dans son stockage local.
  • Lors du chargement de la page ou lors de la saisie du mot de passe ... extraire le mot de passe du stockage local
  • Faites une demande à une fonction cloud Firebase, assurez-vous d'inclure le mot de passe qu'elle vient de récupérer du stockage local et la page pour laquelle elle demande du contenu
  • La fonction cloud Firebase valide le mot de passe
  • La fonction cloud Firebase récupère les données d'une page spécifique
  • La fonction cloud Firebase renvoie lesdites données
  • Charger les données sur le front-end comme d'habitude

Comme vous l'avez déjà identifié, vous devez vous en tenir à l'authentification Firebase intégrée pour l'édition de contenu.


0 commentaires

6
votes

La façon dont je fais généralement cela est un peu comme la réponse de Jeremy, mais plus simple.

Vous demandez à l'utilisateur un mot de passe lorsqu'il accède à la page et stockez ce mot de passe localement (pour les recharges).

Ensuite, vous stockez les données dans votre base de données sous un chemin contenant le mot de passe. Dites donc que votre mot de passe est geheim , vous pouvez stocker les données sous:

firebase.database().ref("data").child(password).once("value", function(snapshot) {
  console.log(snapshot.val());
});

Maintenant, vous sécurisez votre base de données avec des règles comme celles-ci: p >

{
  "rules": {
    ".read": false,
    "data": {
      "geheim": {
        ".read": true
      }
    }
  }
}

Désormais, quelqu'un ne peut lire les données dans / data / geheim que s'il connaît le chemin complet. Vous allez donc entrer la partie data dans votre code, mais leur demander de saisir geheim comme mot de passe. Ensuite, vous attachez un auditeur avec:

data: {
  geheim: {
    value: "This is the secret value"
  }
}

Et si l'utilisateur a entré la valeur correcte pour mot de passe , cela lira la valeur.


0 commentaires

0
votes

Je suggère définitivement la réponse de Frank car c'est simple et ça marche. La morale de l’histoire est que vous utilisez la base de données Firebase pour stocker votre mot de passe en lecture seule mais , si vous voulez vous compliquer la vie parce que vous avez besoin d’un système de mot de passe en lecture seule, le produit d’authentification fournit la méthode d'authentification personnalisée que vous pouvez intégrer à votre système d'authentification existant (par exemple, fb login). Il a évidemment besoin d'une implémentation côté serveur qui est un code qui prend le mot de passe, vérifie s'il est valide et renvoie le jeton au système Auth.
Plus de détails ici: https://firebase.google.com/docs/auth/ web / custom-auth


0 commentaires