Se si desidera consentire agli utenti del sito siano in grado di effettuare il login con Facebook Connect, Google, ecc, come si fa a progettare il vostro database in modo che essi sono tutti integrati?
Trattare con più sistemi d'accesso (Facebook Connect, Google, e altri)
Io suggerisco di usare una tabella Conti per contenere i dati dell'account locali che sarebbe poi essere correlate a una tabella o una tabella AthenticationMethods Credenziali in cui si desidera tenere relativi dettagli di autenticazione esterni. Questo permette al vostro sito e tutto questo di complessità per essere correlato a Conti e il vostro processo di login per ben astratte le varie forme di autenticazione che si potrebbe desiderare di sostenere. Dato che ogni metodo di autenticazione può avere diversi livelli di complessità Suggerisco guardando le varie API e attraversare riferimento a tutti di trovare similitudini comuni. Più importante si vuole individuare dove essi sono diversi in modo che voi tavolo delle credenziali in grado di gestire i vari bit di dati che ogni API potrebbe requrie. Non dimenticare di includere OpenID!
Ho utilizzano due campi nel mio account o utente locale tavolo. Uno si chiama "externalSystemId" (TINYINT), e l'altro è "ExternalID" (doppio). Ho alcune costanti codice che definiscono i vari valori externalSystemId, cioè. EXTERNAL_SYSTEM_FACEBOOK = 1, EXTERNAL_SYSTEM_OPENID = 2, ecc L'ExternalID è naturalmente id dell'utente da tale sistema.
Durante la manipolazione di un oggetto utente nel mio codice, io posso facilmente determinare quale sistema di un utente è da, e caricare i meccanismi codice appropriato per l'autenticazione o mostrare qualcosa che è sistema adeguato, in base alla externalSystemId.
Si noti che si potrebbe desiderare di utilizzare una tabella di database per memorizzare i record di sistemi esterni, piuttosto che le costanti di codice, a seconda di quanti si sta andando a che fare con e se avete bisogno di un po 'di informazioni aggiuntive sul sistema.
Sei sicuro che si desidera memorizzare altre informazioni di "login": "password"? Ti consiglierei di avere un'enumerazione per il risparmio che il login di sistema l'utente proviene.













