2010-09-28 6 views
19

Sto costruendo un'applicazione che voglio interfacciare con Facebook Connect, Twitter, OpenID e potenzialmente altri social network. Gli utenti saranno in grado di accedere utilizzando qualsiasi numero di questi metodi allo stesso tempo. La mia applicazione utilizza MySQL come database di back-end.Schema database per più autenticazioni, Facebook Connect, Twitter, OpenID, ecc

Qualcuno può darmi una guida su come dovrebbe essere il mio schema db per catturare le informazioni utente da vari social network allo stesso tempo? Un'idea che ho (in base alla mia lettura on-line) è qualcosa di simile:

utente {userid, ...}
UserFacebook {fbid, userid, ...}
UserTwitter (twid, userid, ... }
ecc, ecc

Quindi per avere un quadro completo di un utente mi sarei unito in tutte le tabelle utente. e 'questo come altri siti di farlo o c'è un modo più intelligente/migliore?

risposta

0

Questo è ciò che faccio, separo la tabella degli account dal processo di autenticazione, ad esempio l'account contiene il nome dell'account, la data di registrazione e uni forse forse. Quindi posso creare 4 tabelle aggiuntive, ad esempio: users_openid, users_facebook, users_twitter e users (per il tuo normale nome utente/autenticazione del sito Web), tutti hanno una chiave esterna (account_id) che collega alla tabella dell'account.

In questo modo si separa l'accesso dell'utente al proprio sistema e l'account effettivo.

+1

Decisamente una cattiva idea dividere gli utenti su quattro tabelle. –

+1

Penso che sia una grande idea. –

+0

@owahab - spiega! – deanWombourne

7

Suggerisco di avere lo schema utente in due tabelle: utenti e identità. Le identità devono avere: Id, ID utente, Adattatore, Hash.

Per l'adattatore di autenticazione nome utente/password, l'hash sarà una password con hash (MD5/SHA1 ad esempio), mentre altri adattatori (Facebook, Twitter, ecc.) Saranno il token fornito dal provider di autenticazione.

Buona fortuna.

+0

Tipo di una vecchia risposta, ma anche nel 2011 è stata una cattiva pratica eseguire un hash MD5/SHA1 diretto per le tue password. – Craig

+0

@Craig yep. Quello stava semplicemente dando un esempio. –

+1

Le persone prendono letteralmente gli esempi. – Craig