JeuWeb - Crée ton jeu par navigateur
La table des utilisateurs partagée - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : La table des utilisateurs partagée (/showthread.php?tid=1076)

Pages : 1 2 3 4


La table des utilisateurs partagée - xviniette - 17-12-2012

C'est une question que je me pose depuis quelques temps.

Comment faire pour avoir une table des users partagée. J'entends pas là par exemple, que pour deux jeux d'une même entreprise, si je me suis déjà inscrit sur un jeu, alors je peux utiliser ce même compte pour l'autre jeu.

J'ai pensé à 3 systèmes différents :

- La méthode fourtout : Une seule base de donnée avec toutes les tables de tous les jeux différents

- Une base de donnée pour chaque jeu sans table user et une base de donnée seulement pour les comptes. (Problème de clé étrangère, jointure, etc... non ?)

- Une bdd pour chaque jeu contenant chacun une table user. Ainsi qu'une bdd avec seulement une table user. Lors de la modification/connexion d'une personne, on modifie les deux tables.
Ainsi par exemple, je suis sur le site A, je modifie mon mot de passe. Il se modifie dans la bdd A et la BDD "partagé".
Une fois sur le site B, je me connecte, on regarde si ça correspond avec la BDD partagé, et on modifie la table de B.


Bref, je ne sais pas trop comment ça fonctionne. La première solution me semble la plus simple mais vraiment fourtout. La deuxième me semble irréalisable (jointure, clé étrangère etc...). Enfin la 3eme semble vraiment très complexe, beaucoup de verification et modification ainsi qu'une redondance des données.

Avez-vous une solution ?

Merci.


RE: La table des utilisateurs partagée - Sephi-Chan - 17-12-2012

Pour t'aider, il faut qu'on sache ce que tu veux partager et surtout : pourquoi ?

Si tu veux une authentification partagée (façon Facebook ou Twitter), je suggère d'utiliser OAuth.
Disons que tu crées une entreprise Endive Games et que tu permets aux joueurs d'y créer leur EndiveID qu'ils pourront utiliser dans tous tes jeux. Ainsi, quand ils arrivent sur un de tes jeux, ils peuvent s'y connecter en 1 clic.


RE: La table des utilisateurs partagée - xviniette - 17-12-2012

Ce que je veux partager, ce sont les informations sur les comptes (login, email, date d'inscription, ...). Pour le pourquoi, c'est simplement pour permettre au joueur de ne gérer qu'un seul compte pour les différents jeux.

Je vais regarder OAuth.

Ca serait pour faire un système comme twinoïd si tu connais. Un seul compte permet de se connecter aux différents jeux.


RE: La table des utilisateurs partagée - Sephi-Chan - 17-12-2012

Alors OAuth (dans sa version 2, c'est plus facile) est ce qu'il te faut. Il faut que tu crées un "provider" et tes jeux seront des "consumers".


RE: La table des utilisateurs partagée - xviniette - 17-12-2012

Je vais me renseigner, merci beaucoup.


RE: La table des utilisateurs partagée - Sephi-Chan - 17-12-2012

Je ne sais pas si tu as déjà implementé la connexion via Facebook/Twitter/GitHub/Google/... mais si ce n'est pas le cas, je te conseille de le faire. C'est très simple et ça te permettra de mieux comprendre le mécanisme, ce qui ne sera pas du luxe si tu crées un provider.


RE: La table des utilisateurs partagée - djidi - 18-12-2012

(17-12-2012, 11:11 PM)xviniette a écrit : Une base de donnée pour chaque jeu sans table user et une base de donnée seulement pour les comptes. (Problème de clé étrangère, jointure, etc... non ?)

J'opterais pour ca personnellement (C'est d'ailleurs ce que je fais dans certains projets ayant des données partagées).
Pour les jointures etc... normalement il n'y a pas de soucis si tes bases se trouvent sur le même serveur.


RE: La table des utilisateurs partagée - Xenos - 18-12-2012

Idem que Djidi, j'utilise le même genre de système pour la prochaine version d'eclerd: 1 BDD pour la "société", contenant les informations du compte entre autres, 1 BDD pour chaque jeu (contenant les informations génériques aux jeux), et 1 BDD pour chaque instance de jeu (aka, chaque planète pour eclerd, ou si c'était ogame, 1BDD par "univers")

Via ce principe, lorsque je veux connecter l'utilisateur sur un serveur de jeu (une planète), je remonte au parent (la BDD de jeu) qui m'identifie. Pour m'identifier, elle-même remonte au parent (la BDD de la société) qui contient les comptes et peut donc m'identifier.
Le résultat effectif est qu'on ne crée qu'un seul compte, depuis le site web d'un jeu auquel on veut jouer, et l'authentification est automatique sur les autres jeux (via la "redirection" vers la BDD de la société).

L'avantage de cette arborescence (qui doit se retrouver dans OAuth) est de séparer les données des comptes des données des jeux: le principe du fourre-tout est à proscrire, car il atteindra vite ses limites (si je fourre tout dans une BDD et que j'ai 25 jeux, avec 10 joueurs/jeu en continue, cela fera 250 connexion en continue sur la même BDD... la limite est souvent entre 10 et 50...)
Autre atout: depuis le compte de jeu (imaginons que j'arrives à me connecter sur le serveur d'une planète de jeu avec les identifiants d'un autre), je ne PEUX PAS remonter au compte parent: je ne pourrai pas me connecter au compte de la société et donc, je ne pourrais pas modifier les données du compte de la société, même si j'ai pu me connecter sur la planète de jeu Wink


RE: La table des utilisateurs partagée - Sephi-Chan - 18-12-2012

Autant utiliser des technologie standards et éprouvées. Wink D'autant que OAuth apporte aussi les mécanismes de permissions, même si dans ce cas ce n'est pas forcément indispensable.


RE: La table des utilisateurs partagée - Wells - 18-12-2012

Pourquoi mettre en place une usine à gaz?

une table user principale avec un identifiant sur 15 caractères pour chaque user.

Ensuite dans chaque table user de tes jeux tu insère l'identifiant global

Et voila ta fait le lien entre tout tes jeux et pourquoi pas des jeux venant d'autres créateurs.