it-swarm-fr.com

Comment concevoir un schéma pour un site qui accepte les connexions à partir de plusieurs sites (par exemple, Connectez-vous, Google, Flickr, etc.)?

Je construis un site ( "le site") et je envisage comment concevoir le schéma DB pour cela.

J'ai quelques scénarios qui affecteront le résultat:

  • L'utilisateur peut choisir d'enregistrer un compte natif sur le site, qui le fera utiliser ce compte pour vous connecter à son compte sur le site à l'avenir. .
  • L'utilisateur peut choisir de se connecter via un autre site ( "Site externe") (tel que Facebook Connect, Google, Foursquare, etc.), qui le fera d'utiliser cela pour se connecter à son Compte sur Le site à l'avenir.
  • Peu importe la méthode de connexion qu'il a choisie (compte natif ou compte de site externe), l'utilisateur sera en mesure d'authentifier son compte sur le site avec des sites externes (tels que Facebook, Twitter, Instagram, etc ...) pour utiliser les données qu'il a sur le site externe (comme ses tweets de Twitter, ses photos de Flickr, etc.), In Le site.

Comment dois-je concevoir le schéma de la DB?

Pour les deux premiers scénarios, j'ai pensé avoir une table appelée Users qui a un id et un type champs. Le type référence une table différente, telle que FacebookUsers ou GoogleUsers, chacun a un user_id champ - qui a une relation étranger avec le Users.id champ - et d'autres domaines tels que le first_name, profile_picture, etc..

Pourtant:

  1. Je ne sais pas à quel point il est intelligent d'utiliser cette approche.
  2. Je ne sais pas comment mettre en œuvre le troisième scénario dans une telle approche.
7
Doron

Il y a une question similaire dans Stackoverflow

Et la solution est

Vous avez besoin de 2 champs supplémentaires dans votre table, l'une est la source de connexion (Twitter, OpenID, Facebook) et l'autre est l'ID utilisateur source (l'ID fourni de Twitter, OpenID, Facebook) Je vous recommande de créer une chaîne comme une connexion Les sources ont des lettres dans leurs identifiants utilisateur et pas seulement des chiffres. plus

  • Je ne sais pas à quel point il est intelligent d'utiliser cette approche.

Cette approche est bonne, en fait des sites qui l'optent. Voir SO Page de connexion https: //stackoverflow.com/users/login

  • Je ne sais pas comment mettre en œuvre le troisième scénario dans une telle approche.

Je pense que vous pouvez mettre en œuvre cela, uniquement si les sites du Thrid Party fournissent un accès. Cette question est hors tension ici, vous pouvez poser cette question dans Stackoverflow

1
CoderHawk