2 votes

Enregistrement de l'utilisateur et connexion Facebook

Mon site Web permet de se connecter de deux façons (comme de nombreux sites Web, dont stackoverflow).

  1. enregistrez votre e-mail et votre mot de passe et connectez-vous ensuite.
  2. Connectez-vous avec Facebook connect

alors j'ai obtenu un User (j'utilise Ebean [JPA]).
lorsqu'un utilisateur se connecte avec facebook connect, j'extrais des informations de base en utilisant l'API facebook Graph.

Maintenant, dois-je différencier (au niveau de la BD) les deux types d'utilisateurs ? (par exemple, en créant une table séparée pour FacebookUser . J'ai aussi entendu parler de table héritant . est-ce des pieds ma situation ?)

quelle est la meilleure pratique pour ces deux types d'options de connexion ?
Je dois mentionner que j'aimerais, dans un avenir proche, utiliser le compte Google comme moyen de connexion.

1voto

Claudiu Points 2846

Je vous suggère d'utiliser un users qui contient des informations de base sur vos utilisateurs, quelle que soit la mécanique d'enregistrement (ci-dessous, c'est un exemple de base) :

id | nom | email | date_créé

Des services différents auront des méthodes d'authentification différentes, donc peut-être est-ce une bonne idée d'avoir des tables différentes pour chacun :

auth_facebook :

id | facebook_id | access_token | ...

auth_website :

id | mot de passe | ...

Et ainsi de suite. En général, la possibilité de se connecter à l'aide de plusieurs services est là pour des raisons de commodité, vous voudrez probablement centraliser vos utilisateurs d'une manière ou d'une autre. Il est également bon de garder à l'esprit qu'en ce qui concerne l'authentification, vous aurez votre identifiant primaire dans la table users, mais vous aurez différentes méthodes de validation en fonction du service que l'utilisateur utilise pour se connecter. Pour Facebook, vous pouvez vérifier le facebook_id après l'authentification et voir lesquels de vos utilisateurs se sont connectés. Le schéma ci-dessus vous permettrait de proposer aux utilisateurs de se connecter à d'autres services également, ce qui peut être utile.

Par exemple, si vous avez des profils de base pour les gens, mais que vous voulez leur permettre de montrer leurs dépôts GitHub, SO rep et leur permettre de se connecter avec leurs amis Facebook en même temps.

L'héritage des tables semble excessif et il est fort probable qu'il soit implémenté différemment dans les différents systèmes de bases de données. Une vue de toutes ces tables pourrait être plus appropriée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X