0
votes

Sécurité de la base de données Firebase pour les nouveaux utilisateurs

Y a-t-il un moyen de vérifier les valeurs à l'aide de règles initialement définies sur la création d'utilisateurs?

J'ai parcouru les documents Firebase en vain. P>

Lorsque la fonction CreateUserwithemailApassword code> est appelée, je crée ensuite certaines valeurs dans la base de données, par exemple: p>

    "users": {
        "ht35resf435dwe3rfdw": {
            "is_premium": false,
            "display_name" "John",
            "last_login": 15353723826
        }
    }


2 commentaires

Est-ce pour la base de données en temps réel ou le cloud Firestore?


Base de données @Dougstevenson.


3 Réponses :


0
votes

Je viens de commencer à utiliser Firebase afin que je ne puisse pas fournir beaucoup d'informations. Si vous voulez commencer à apprendre, il y a un superbe Série Vous pouvez regarder. De plus, je suggérerais d'utiliser Cloud Fireestore au lieu de la base de données en temps réel car l'échelle est plus ancienne et comporte moins de fonctionnalités. Changer les règles de sécurité de votre base de données vous permettra de vous guider avec lesquels les utilisateurs peuvent modifier des données. Ce que vous devez faire, c'est rendre la valeur par défaut premium à FALSE ou même n'exister pas dans la base de données, puis créer une fonction JavaScript pour la créer ou la modifier en true dans la base de données.

EDIT:

Ajith Naruto fonctionnerait, mais il refuserait également toutes les écritures à la base de données de l'application Web.

EDIT 2:

Frank van Puffelen's devrait travailler, je sortirais de sa réponse.


0 commentaires

0
votes

Vous pouvez simplement modifier les règles de sécurité ci-dessous afin que l'utilisateur ne puisse pas apporter des modifications.

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


0 commentaires

2
votes

Pour autoriser uniquement une valeur à définir sur FALSE , vous pouvez utiliser une règle de validation: xxx

ce qui précède n'autorise que false < / code> à écrire par n'importe quel client. Lorsque vous écrivez à l'aide d'un SDK administrateur, ceux-ci écrit contourner ces règles de sécurité. Vous pouvez donc utiliser l'administrateur SDK pour marquer les utilisateurs Premium.


2 commentaires

Ah! Merci. C'est ce que je ne comprenais pas. J'ai supposé que si je l'ai mis sur false et je l'ai fait toujours faux, je ne pourrais pas le modifier plus tard.


Le problème principal est toujours qui "i" est dans ce scénario. Qui est de confiance et qui n'est pas. Il est très facile de permettre que la valeur initiale soit fausse, mais si vous autorisez l'utilisateur à y retourner et de le changer, vous n'avez rien gagné. Je réalise maintenant BTW que l'utilisateur ne pourra pas écrire son nœud d'utilisateur une fois que vous avez changé is_premium sur true . Si vous souhaitez supporter un cas d'utilisation, vous devrez avoir des nœuds de haut niveau distincts pour les données que l'utilisateur peut modifier, et les données qu'ils ne peuvent pas. Voir Stackoverflow.com/q/38648669