sql >> Databáze >  >> RDS >> Database

Přihlášení pomocí externích služeb

Zadání uživatelského jména a hesla je jedním ze způsobů přístupu k účtu, ale není jediným. V tomto článku uvidíme, jak povolit externí služby (jako Google nebo Facebook) při přihlašování do databáze.

Co jsou přihlášení k externí službě?

Poskytnout uživateli možnost přístupu ke svým systémovým účtům prostřednictvím externích služeb je rostoucím trendem mezi webdesignéry. Tato možnost může poskytnout několik výhod, například poskytnout uživatelům o jednu kombinaci jména a hesla méně, aby si ji zapamatovali. Může také pomoci správcům přizpůsobit uživatelské prostředí.

Když webové aplikace nabízejí přihlášení k externí službě, přihlašovací obrazovka vypadá jako na obrázku níže. Uživatel může zadat své přihlašovací jméno a heslo nebo může kliknout na tlačítko, které ho přesměruje na službu dle vlastního výběru (Facebook, Twitter, Google atd.), kde se přihlásí a bude přesměrován do původní aplikace.

Zde je vzorová přihlašovací obrazovka z Vertabelo Academy:

Jak fungují externí přihlášení

Přidání externích přihlašovacích služeb vyžaduje od vývojářů další práci. Nejoblíbenější služby sociálních médií používají protokol s názvem OAuth 2.0 . Pouze Twitter používá starší protokol s názvem OAuth 1.0 . Protokol umožňuje čtení informací o uživateli, jako je jeho celé jméno, e-mail, pohlaví atd. Přesné dostupné informace závisí na službě sociálních médií a na tom, co uživatel poskytl. (Například je možné mít účet na Facebooku bez připojené e-mailové adresy.) Bez ohledu na to se však zaměříme na to, jak implementovat tento systém do návrhu databáze.

Jako výchozí bod použijeme náš předchozí článek o obnovení hesla a potvrzení e-mailem jako základ. Zde jsou tabulky týkající se uživatelů z tohoto článku.




Návrh databáze pro externí přihlášení

Mnoho informací v user_account tabulka se týká vlastní autentizace – plus souvisejících funkcí, jako je připomenutí hesla a potvrzení e-mailu. Pokud se uživatel ověřuje pomocí externí služby, tyto sloupce nepotřebujeme. Připomenutí hesla, potvrzení e-mailem a další funkce jsou řešeny externí službou. Prvním krokem v našem návrhu je oddělení user_account tabulky do dvou tabulek:user_account a user_profile .

user_account tabulka nyní zpracovává veškeré vlastní autentizační účetnictví. user_profile tabulka představuje skutečné informace o uživateli:jméno, e-mail, časové pásmo, podmínky přijetí služby atd. Všechny obchodní tabulky by nyní měly souviset s user_profile tabulka.

Nyní k externím účtům. OAuth protokol nám nakonec poskytne identifikátor pro uživatele v jejich systému. Tento identifikátor není jméno uživatele v externím systému. Je to pouze identifikátor pro naši aplikaci. Toto interní ID musíme uložit do naší databáze. Mohli bychom přidat sloupce s hodnotou null facebook_id , google_id , twitter_id , atd. do tabulky user_profile . Ale uděláme něco jiného.

Přidáme nové tabulky:facebook_account , twitter_account , google_account , který bude ukládat externí id. Tímto způsobem, pokud potřebujeme, můžeme přidat další informace specificky pro každý sociální web. Pokud chceme přidat možnost přihlášení pro další sociální web, nebudeme muset měnit user_profile stůl. Pouze přidáme další external_service_account tabulka.

Každá z nových tabulek sdílí stejný formát sloupců. Jeden z nich bude int user_profile_id , což je jak cizí klíč odkazující na sloupec id v user_profile tabulky a primárního klíče. (To může sloužit jako primární klíč, protože žádné dva účty v našem systému by neměly být spojeny s více účty stejné externí služby.)

Druhý sloupec bude id externího účtu – facebook_id , například. Pro každý z facebook_id existuje jedinečné omezení , google_id a twitter_id sloupců. Víme, že žádné dva účty nemají stejné ID. Ve skutečnosti, když je uživatel ověřen pomocí externí služby, známe jeho facebook_id . Když najdeme odpovídající řádek v facebook_account tabulku a najděte správný user_profile , víme, který uživatel se právě přihlásil do systému. Pokud neexistuje žádný řádek s tímto ID, vytvoříme nový řádek v user_profile tabulky a nový řádek v příslušné tabulce účtů.

Zde je konečný model:





  1. Export databáze PostgreSQL pomocí phpPgAdmin

  2. Jak z databáze dostat DateTime s možnou hodnotou Null

  3. PASS Summit 2013:Úspěch v Charlotte

  4. Mezipaměť výsledků