2013-04-19 12 views
5

Moje pytanie jest prawie taka sama jak ta oneArchitektura dla łączenia wielu kont i rejestracji konta użytkownika

Jedyną różnicą jest to, że użytkownicy posiada opcję Register (udostępnia swoją nazwę użytkownika i hasło) .Users powinien mieć tylko jedno konto zarejestrowany, jeśli użytkownik ma ten sam adres e-mail, scaliłem te konta. a moja aplikacja ma inną metodę logowania, która odbywa się za pośrednictwem Facebooka.

Co ja w zasadzie zrobić to

  • gdy użytkownik odwiedza na miejscu po raz pierwszy, on lub ona następnie zostanie utworzone konto użytkownika, w której ma tylko nazwę użytkownika, hasło i mail po ten rekord tożsamości strony trzeciej zostanie utworzony , a następnie sparowany z kontem lokalnym. Jednak w tabeli Użytkownicy będzie mieć pustą nazwę użytkownika i hasło, ale wiadomość e-mail zostanie wypełniona z adresem e-mail użytkownika, który pobraliśmy od strony trzeciej dostawca usług

I Drugi scenariusz

  • Użytkownicy próbuje zalogować się na stronie. sprawdź, czy e-mail istnieje, jeśli e-mail istnieje, ale jest zarejestrowany za pomocą konta innej firmy, Użyj wypełnionego formularza użytkownika i włóż go do konta użytkownika sparowane z kontem osoby trzeciej, w skrócie, jeśli e-mail użytkowników istnieje w bazie danych I połączy się z lokalnie utworzonym kontem i kontem osoby trzeciej o numerze .

Teraz moje pytanie jest moje podejście bezpieczne i wiarygodne? jeśli nie, jaki jest najlepszy sposób łączenia kont, a jednocześnie jeśli użytkownik zarejestruje się za pomocą tego samego adresu e-mail (konta z konta osoby trzeciej) i będzie miał konto osoby trzeciej, to konto zostanie scalone?

+0

jest to coś jak OpenID, które chcesz osiągnąć? –

+0

@ Charles-EdouardCoste tak to właśnie próbuję zrobić. – user962206

Odpowiedz

3

Sposób, w jaki na to patrzę, jest tylko jedno konto. Jeden e-mail, jeden okres rozliczeniowy. Z tym kontem mogą być powiązane różne atrybuty, np. połączony z zestawem poświadczeń OAuth itp. Ale zasadniczo jest tylko jedno konto. Jeśli Twój użytkownik zarejestrował się raz przy użyciu konta społecznościowego, a następnie spróbuj zarejestrować się ponownie w swojej witrynie, wyślij je na stronę społecznościową, której użyli do zarejestrowania się po raz pierwszy i poproś o zalogowanie się. Następnie zaloguj się automatycznie do witryny. Jeśli użytkownik ma konto w swojej witrynie, a następnie próbuje ponownie zarejestrować konto społecznościowe, powiedz im, że masz już konto na stronie i poproś go o zalogowanie się. IMHO, prowadzenie oddzielnych kont i próba ich scalenia to bałaganiarski pomysł.

3

Podam dwa zestawy zachowań, jeden po zalogowaniu i jeden po wylogowaniu.

Po zalogowaniu zapewnia możliwość łączenia z nowymi kontami osób trzecich. Na przykład rejestrujesz się za pomocą adresu e-mail i hasła, a następnie zaloguj się, a następnie możesz połączyć swoje konto na Facebooku. Aby połączyć swoje konto na Facebooku, autoryzuj za pomocą Facebooka, a następnie przechowuj informacje z Facebooka w tym koncie użytkownika.

Po wylogowaniu musisz zalogować się przy użyciu istniejących poświadczeń. Jeśli po wylogowaniu spróbujesz utworzyć konto z istniejącym adresem e-mail, uniemożliwisz zalogowanie się, mówiąc "Konto z tym adresem e-mail już istnieje", lub natychmiast wezwij użytkownika, aby się zalogować, aby scalić konto (w takim przypadku działa on jak zalogowany w przypadku łączenia konta zewnętrznego, tylko z odwróconą kolejnością operacji uwierzytelniania).

Jeśli powyższe nie wynika jasno, zalecam posiadanie jednego konta użytkownika i sposobu rejestrowania powiązań między tym kontem a kontami zewnętrznymi. Możesz to zrobić w NoSQL kupuj właśnie dodając pola do dokumentu użytkownika lub możesz zrobić to relatywnie, mając tabelę reprezentującą konta zewnętrzne z obcym kluczem łączącym je z ID użytkownika.

+0

Ze świergotem nie wysyłają e-maili. Masz jakieś pomysły, jak scalić konta twitter i inne konta Oauth? – CMCDragonkai

+0

@CMCDragonkai, twoje wybory mają zakazać tworzenia kont na Twitterze (można dodać tylko po zalogowaniu się w inny sposób), zmuszać nowych użytkowników Twittera do dostarczania i adresu e-mail w ramach procesu rejestracji, lub ryzykować, że użytkownicy Twittera tworzą niezamierzony duplikat konta. –

+0

Czy możesz mi powiedzieć, jak zidentyfikować unikalnych użytkowników Twittera? Przez ich imię? To chyba jedyny unikalny identyfikator, z którego mogę korzystać. Chodzi mi o to, jak ten sam użytkownik twittera ponownie się loguje. – CMCDragonkai