0

ログインシステムに janrain を使用したいのですが、準備はできていますが、データベースの構築方法がわかりません。openID を使用するためのデータベース設計は何ですか? 特に、一部のユーザーがいくつかの異なるプロバイダーを持っている場合、どうすれば彼らが誰であるかを知ることができますか?彼らは新しいユーザーですか、それとも古いユーザーですか?完全なデータベース設計が必要です

4

3 に答える 3

1

ユーザー情報を保存するテーブルに openId の列を追加します。

例は次のとおりです。

create table users (
first_name varchar(50),
last_name varchar(50),
email_address varchar(100),
openId varchar(150));

ユーザーがアプリケーションにログインしているときに検索が高速になるように、openId のインデックスを設定することもできます。また、UNIQUE 制約を追加して、同じ openId を持つユーザーに 2 つの行が存在しないようにします。

于 2012-06-07T08:40:25.400 に答える
0

アプリケーションで行ったことをお勧めします。users テーブルにブール値の列がありました。ユーザーが openID を使用する場合は 1、使用しない場合は 0。もう 1 つのテーブルは、オープン ID を使用するときに提供されるプロバイダとキーを含む opneID テーブルです。したがって、次の 3 つのシナリオがあります。

  1. ユーザーはすでにログインしており、次回のログイン時に openID を追加したいと考えています。
  2. ユーザーはすでに登録されていますが、次回ログインするときに openID を使用したいと考えています。
  3. ユーザーは登録されておらず、OpenID を使用してログインしようとしています。

これは私がしたことです:

  1. 詳細はすでに保存されているため、現在ログインしているユーザーを検索し、openID ブール値を true にして、提供する openID の詳細を追加します。

  2. 彼が openID をクリックすると、すでに登録されているかどうか、電子メール ID とパスワードを尋ねられた場合は、openID の詳細を使用するかどうかを尋ねられます。

  3. (これが最も難しい部分です) openID をブール値 1 にし、OpenID の詳細を追加してから、アプリケーションに適した重要な詳細を尋ねるフォームを彼に渡します。アプリケーションの規模によっては、2 番目のフォームが必要ない場合があります。私が取り組んでいたアプリケーションは、ユーザーからの追加情報を必要としていました。2 番目のステップをスキップしたい場合は、Facebook API によって提供されるいくつかのオプションを調べて、first_name last_name などの詳細を取得して保存します。

したがって、ユーザーがログインしているときに、OpenID ブール値が 0 に設定されているか、1 に設定されている場合は 1 に設定されているかを確認し、適切な結合で保存した対応する OpenID の詳細を使用します。

私が見つけた最も困難な部分は、OpenID を使用しているユーザーからパスワードを取得してはならない 3 番目のステップでした。これは、データベースの制約に違反していました。登録したい他のユーザーに問題が発生するため、制約を外すことができませんでした。そのため、どうにかして openID ユーザーの制約を回避する必要がありました。最善の解決策ではないかもしれませんが、役立つかもしれません。幸運を!!

于 2012-06-07T23:40:28.927 に答える
0

必要なのは、使用している OpenID ライブラリから返された ID URL を格納する列だけです。

ユーザーが自分のアカウントに複数の openid を割り当てられるように、列identityと列のみを持つ別のテーブルにそれを配置することを検討してください。userid

于 2012-06-07T08:41:15.053 に答える