2010-09-28 14 views
19

Buduję aplikację, którą chcę połączyć z Facebook Connect, Twitter, OpenID i potencjalnie innymi sieciami społecznościowymi. Użytkownicy będą mogli logować się przy użyciu dowolnej liczby tych metod w tym samym czasie. Moja aplikacja używa MySQL jako bazy danych backendu.Schemat bazy danych dla wielu uwierzytelnień, Facebook Connect, Twitter, OpenID, itp.

Czy ktoś może podać mi wskazówki dotyczące tego, jak powinien wyglądać mój schemat bazy danych do przechwytywania informacji użytkownika z różnych sieci społecznościowych w tym samym czasie? Jednym z pomysłów mam (na podstawie lektury online) jest coś takiego jak:

Użytkownika {identyfikatora, ...}
UserFacebook {fbid, userid, ...}
UserTwitter (twid, userid, ... }
, itp

Następnie, aby uzyskać pełny obraz użytkownik chciałbym przyłączyć we wszystkich tabelach użytkownika. Czy tak, jak inne strony zrobić to czy jest tam sprawniej/lepszy sposób?

Odpowiedz

0

To właśnie robię, oddzielam tabelę kont od procesu uwierzytelniania, np. Konto zawiera nazwę konta, datę rejestracji i nazwę uni może id que. Następnie mogę utworzyć 4 dodatkowe tabele, na przykład: users_openid, users_facebook, users_twitter i users (dla zwykłej nazwy użytkownika/witryny internetowej), wszystkie mają klucz obcy (account_id), który łączy się z tabelą konta.

W ten sposób oddzielasz sposób logowania użytkownika do systemu i rzeczywiste konto.

+1

Zdecydowanie zły pomysł na podzielenie użytkowników na cztery tabele. –

+1

Myślę, że to świetny pomysł. –

+0

@owahab - wyjaśnij! – deanWombourne

7

Sugeruję, aby mieć swój schemat użytkownika w dwóch tabelach: Użytkownicy i tożsamości. Tożsamości powinny mieć: identyfikator, identyfikator użytkownika, adapter, skrót.

Dla adaptera uwierzytelniania nazwy użytkownika/hasła, skrót będzie haszyszem (np. MD5/SHA1), podczas gdy inne karty (Facebook, Twitter itp.) Będą tokenami dostarczanymi przez dostawcę uwierzytelniania.

Powodzenia.

+0

Rodzaj starej odpowiedzi, ale nawet w 2011 r. Złą praktyką było robienie prostego skrótu MD5/SHA1 dla twoich haseł. – Craig

+0

@Craig yep. To było tylko dawanie przykładu. –

+1

Ludzie biorą przykłady dosłownie. – Craig

Powiązane problemy