IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Architecture Discussion :

Proposer une démo avec données aux utilisateurs sur une application web


Sujet :

Architecture

  1. #1
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut Proposer une démo avec données aux utilisateurs sur une application web
    Bonjour,

    Je travaille sur une application web de gestion (Interface, formulaires etc. - serveur - bd). Les technos que j'utilise sont AngularJS, NodeJS et MongoDB.
    L'application est sur le net mais je ne propose pas encore de démo pour les utilisateurs. Je voudrais leur proposer un login et un mot de passe du type ("demo", "demo") ou juste un bouton "Démonstration" pour qu'ils puissent accéder à la version de démo. Sur l'interface publique, il n'y a qu'une brève présentation, un form de contact etc.

    Il existe plusieurs interfaces internes. Une fois que l'utilisateur enregistré est authentifié, il est redirigé sur une interface selon son rôle. Donc je pencherais plus sur un bouton ou une liste de choix de rôles (d'interfaces selon le rôle du user). L'utilisateur choisit le rôle qu'il veut voir et ouvre la démo.

    Voila pour le contexte. Maintenant, la question que je me pose est : comment organiser cette version de démo techniquement ? en sachant que les utilisateurs se connectant sur une démo ne peuvent avoir les mêmes données !
    Je crée une base vide ayant la même structure que la "réelle" et je la détruis une fois que l'utilisateur se déconnecte ? Dans ce cas, comment savoir si l'utilisateur s'est déconnecté ? Je crée un batch qui supprime les bd la nuit ?
    Ou j'utilise la même bd mais avec des utilisateurs différents ? mais comment gérer ça au niveau de l'interface si j'ai un user : "demo", "demo" ou un bouton redirigeant vers la démo ?

    Comment font les applis sur le web ?

    Merci.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  2. #2
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Il n'y a personne qui est intéressé par le sujet...
    C'est un projet personnel sur lequel je travaille et je n'ai pas encore attaqué ce tiquet...
    Je pense gérer cela dans des cookies afin que l'utilisateur ouvrant la version de démo retrouve ses données lorsqu'il se reconnecte les fois suivantes.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  3. #3
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 918
    Points
    2 918
    Par défaut
    Hello,

    Je ne comprends pas trop... tous les utilisateurs doivent se connecter avec le même compte demo demo mais voir des données différentes ? J'ai rarement vu ça dans les applications de ce type qui se contentent en général d'afficher toutes les données qui ont été entrées par n'importe quel utilisateur démo, avec un vidage de la base tous les jours ou toutes les semaines.

  4. #4
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Merci pour ta réponse.
    Mais je pense qu'il n'est pas utile de permettre à un utilisateur de voir les données (même si elle sont "fake") créées par un autre utilisateur qui a visité le site juste deux minutes avant... En plus, un utilisateur peut mettre n'importe quel mot dans les formulaires... Je ne voudrais pas qu'un deuxième utilisateur tombe dessus...

    Je pense qu'une démo doit être faite à partir d'une base vierge. Et puisque l'utilisateur saisit des données, pourquoi ne pas les enregistrer pour qu'il les retrouve plus tard tout en limitant les données à enregistrer.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #5
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 918
    Points
    2 918
    Par défaut
    Ouais... du coup, si le login ne suffit pas à identifier un utilisateur, il faut introduire un autre discriminant donc effectivement pourquoi pas un cookie. Mais ça va t'obliger à introduire une dérogation dans ton système qui en prod normale est censé uniquement se baser sur le login...

    Comme je disais, ce qui se fait la plupart du temps c'est soit demander à l'utilisateur de s'enregistrer et lui envoyer des identifiants custom du genre demo1988789, soit afficher les données de tout le monde mais je n'ai jamais vu la solution par cookie.

  6. #6
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Sinon tu crées un système d'authentification externe (une page ou tu demandes un identifiant, ou alors une page qui génère un ID unique), et avec cet id unique tu spawn un container docker qui contient l'application avec un compte demo/demo pre-enregistré. L'utilisateur utilises alors l'adresse id.domaine.com pour aller sur sa version de demo.

    Ensuite, tu lances jwilder/nginx-proxy pour faire le proxy, et utilises -e VIRTUAL_HOST=id.domaine.com pour lancer les containers.

    Pour ne pas déranger tes autres services, tu lances ça sur une box séparée genre VPS SSD 1 chez OVH (un truc assez cheap), ou bien un digital ocean ou linode... Comme ça si t'es spammé ça casse juste tes demos.

    Il te faut bien entendu un cron qui kill les containers après une semaine.

  7. #7
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par Luckyluke34 Voir le message
    Mais ça va t'obliger à introduire une dérogation dans ton système qui en prod normale est censé uniquement se baser sur le login...
    Remarque intéressante...
    Oui, en prod je me base uniquement sur le login. Je ne comptais pas faire le test sur le login. Mais enregistrer une clé dans le cookie identifiant le type de compte (prod, démo).
    Mais réflexion faite, cela revient au même...

    Au niveau de la présentation (AngularJS), je dispose (déjà) des informations de l'utilisateur (username uniquement et quelques données métier) avec un token JWT pour l'authentification et les autorisations d'appels au serveur.
    Je pourrais me baser soit sur le login (si c'est démo), soit sur la présence ou pas du token. S'il est absent, cela voudrait dire que c'est une démo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(!token)
        cookieService.save(data);
    } else {
        httpService.save('//domain...');
    }
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  8. #8
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Vu que tu as une base MongoDB, specifie un TTL sur les données temporaires.

    Pour isoler les personnes, remplace le formulaire login/mdp par un identifiant autogénéré. S'il doit y avoir un réel cloisonnement des utilisateurs, il convient mieux comme suggéré de démarrer de nouvelles instances. C'est le meilleur moyen de gérer le multi-tenant.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  9. #9
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Merci à vous deux.
    Je ne savais pas qu'on pouvait automatiser la suppression des documents dans MongoDB
    Je vais effectivement utiliser cette option et vais creuser la solution proposée par Théocrite.

    Et juste une précision. Je pense que vous vous en êtes aprçu :
    Quand je parlais d'utilisateurs, je voulais parler bien entendu de visiteurs non authentifiés...
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/03/2014, 20h19
  2. [9.1] Connaître les droits d'un utilisateur sur une base de données
    Par stc074 dans le forum Administration
    Réponses: 3
    Dernier message: 03/03/2014, 20h12
  3. Créer un utilisateur sur une base de données
    Par majduuus dans le forum Développement
    Réponses: 3
    Dernier message: 06/09/2013, 16h31
  4. Spécifier les droits d'un utilisateur sur une base de données
    Par takinelinfo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/11/2011, 11h27
  5. Priviléges d'un utilisateur sur une base de données
    Par fedora8 dans le forum Administration
    Réponses: 2
    Dernier message: 18/11/2010, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo