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?
4 Réponses :
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.
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 ...
Comme vous l'avez déjà identifié, vous devez vous en tenir à l'authentification Firebase intégrée pour l'édition de contenu.
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.
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