サイトのユーザーがFacebook ConnectやGoogleアカウントなどでログインできるようにするには、データベースをどのように設計するのですかすべて統合された?複数のログインシステム(Facebook Connect、Googleアカウントなど)を扱う
答えて
アカウントテーブルを使用して、関連する外部認証の詳細を保持するAthenticationMethodsテーブルまたはCredentialsテーブルに関連するローカルアカウントデータを保持することをお勧めします。これにより、サイトやその複雑さのすべてがアカウントやログインプロセスに関連していて、サポートしたいと思うさまざまな認証形式をきれいに抽象化することができます。それぞれの認証方法が異なるレベルの複雑さを持っているとすれば、私はさまざまなAPIを見て、共通の類似点を見つけるためにそれらをすべて参照することをお勧めします。さらに重要なのは、それぞれのAPIが必要とするさまざまなデータビットを資格テーブルで処理できるように、それぞれの場所が異なることです。 OpenIDを含めることを忘れないでください!
ローカルアカウントまたはユーザーテーブルで2つのフィールドを使用します。 1つは "externalSystemId"(TINYINT)と呼ばれ、もう1つは "externalId"(DOUBLE)です。私はさまざまなexternalSystemId値を定義するコード定数をいくつか持っています。 EXTERNAL_SYSTEM_FACEBOOK = 1、EXTERNAL_SYSTEM_OPENID = 2などです。もちろん、externalIdはそのシステムのユーザーIDです。
私のコードでUserオブジェクトを扱う際に、ユーザーがどのシステムから来ているのかを簡単に判断して、externalSystemIdに基づいてシステムに適したものを認証または表示するための適切なコードメカニズムをロードできます。
対処する予定の数と、システムに関する追加情報が必要かどうかによって、コード定数ではなく外部システムのレコードを格納するデータベーステーブルを使用することをお勧めします。
「ログイン」以外の情報、「パスワード」を保存してもよろしいですか?ユーザーがどのログインシステムを使用しているかを保存するための列挙があることをお勧めします。
- 1. 複数のマーカーを扱うGoogle Maps APIv3
- 2. 同じアカウントの複数のログインチャンス(Facebook-Connect、Oauth、OpenIDなど)を可能にするデータベーススキーマ
- 3. Facebook Connect - どのように
- 4. Google App Engine(Python)のシンプルなFacebook Connect
- 5. 複数のログインシステムとロール
- 6. デスクトップGoogle/Twitter/Facebookアカウント認証
- 7. Googleアナリティクス - 複数のアカウントの複数のトラッカー?
- 8. 複数のリストタイプを扱う
- 9. 複数のプロジェクトを扱う
- 10. 複数のAVAudioPlayersを扱う
- 11. 複数のログイン統合(Google、Yahoo、Facebookなど) - テンプレート?
- 12. Google Maps v3でウェイポイントで複数のルートを扱う
- 13. 私のウェブサイト*はFacebook Connect、Google Friend Connect、OpenID、*、*などを介して安全に*ログインを許可できますか?
- 14. PHP扱う複数のチェックボックス
- 15. cURL as proxy、HTTPS/CONNECTメソッドを扱う
- 16. Google Friend Connectのログインボタンを複数用意できますか?
- 17. Facebook Connect
- 18. Railsでは、複数のチェックボックスをどのように扱うか?
- 19. Androidは複数のR.javaをどう扱うのですか?
- 20. TwitterやFacebook用のDisqusのようなログインシステム
- 21. Facebook Connectのデータベースストレージ
- 22. Android AppのGoogleアカウント
- 23. 複数のGitアカウント
- 24. 検索エンジン(Google、yahoo、bingなど..)が重複コンテンツページを扱う方法
- 25. 複数ログインのオプション(Google/Facebook/Twitter)
- 26. facebook connectログアウトユーザーのfacebookから
- 27. CakePHPで複数のURL値を扱う
- 28. CMakeで複数のプロジェクトを扱う
- 29. Outlookで複数のカレンダーを扱う
- 30. 複数のSDカードスロットを扱う方法