2

私のウェブサイトでは、2つのログイン方法が可能です(stackoverflowを含む多くのウェブサイトと同様)。

  1. メールアドレスとパスワードを登録し、後でログインしてください。
  2. Facebookコネクトでログイン

それでUserクラスを取得しました(私はEbean [JPA]を使用しています)。
ユーザーがfacebookconnectでログインすると、facebookGraphAPIを使用して基本情報を抽出します。

ここで、2つのタイプのユーザーを(DBレベルで)区別する必要がありますか?(たとえば、別のテーブルを作成します。テーブルの継承FacebookUserについても聞いたことがあります。それは私の状況に足りますか?)

この2種類のログインオプションのベストプラクティスは何ですか?
近い将来、ログイン方法としてGoogleアカウントを使用したいと思います。

4

1 に答える 1

1

users登録の仕組みに関係なく、ユーザーに関する基本的な情報を含むテーブルを使用することをお勧めします(以下は必要最低限​​の例です)。

id | 名前| メール| date_created

サービスが異なれば認証方法も異なるため、それぞれに異なるテーブルを用意することをお勧めします。

auth_facebook:

id | facebook_id | access_token | ..。

auth_website:

id | パスワード| ..。

等々。通常、複数のサービスを使用してログインする機能は便利なためにあります。おそらく、ユーザーを何らかの方法で一元化することをお勧めします。認証に関しては、usersテーブルにプライマリIDがありますが、ユーザーが接続に使用するサービスに応じて異なる検証方法があることにも注意してください。Facebookの場合、認証後にfacebook_idと照合して、どのユーザーがログインしているかを確認できます。上記のスキーマを使用すると、ユーザーが他のサービスに接続できるようになります。これは便利です。

特定のケースは、人々の基本的なプロファイルを持っているが、彼らがGitHubリポジトリ、SO担当者を披露し、同時にFacebookの友達とつながることを許可したい場合です。

テーブル継承はやり過ぎのように聞こえ、データベースシステムごとに実装が異なる可能性があります。これらすべてのテーブルのビューがより適切である可能性があります。

于 2012-09-11T17:52:05.143 に答える