これはデータベースに関する質問です。 openidライブラリがすでにインストールされ、動作しています。OpenID情報をデータベースに保存する
私が取り組んでいるウェブサイトでOpenIDを使いたいです。ユーザーには3種類あります。これらのユーザーのすべてが単純に同じテーブルに格納されている
を認証するためのOpenIDを使用して
- コメントテーブル名前付きアカウントは、アカウントが管理できるブログにリンクされています。匿名ユーザーはブログの記事にコメントすることができますが、何もできません。匿名ユーザーがアカウントにサインアップすると、そのユーザーの古いコメントを指定されたアカウントに自動的に転送したいと考えています。私は現在、ユーザーが一意の名前と有効な電子メールでフォームに記入するようにしています。
現在、両方のアカウントのセットは、次のスキーマを使用して同じテーブルに格納されています。私はこれを使用してい
create_table :users do |t| t.string :name #unique because it maps to a subdomain t.string :openid_url #unique t.string :email #unique t.string :password_hash t.string :password_salt t.boolean :guest #Anonymous user flag t.timestamps end
(
openid_url
が同じのOpenIDに接続されることから、複数のアカウントを防ぐためにユニークである。ユーザーは、電子メール/パスワードでログインするのでemail
が一意である)(はい、それはレールの移行です)私はGoogleのOpenID実装に問題がありました。 Google for OpenIDを使用するすべてのユーザーは、同じURL:https://www.google.com/accounts/o8/udを持っています。
URLは各ユーザーごとに一意ではないため、Googleをopenidプロバイダとして使用するにはどうすればサポートできますか? (存在する制約を覚えておいてください)
注:Googleアカウントはインターネット上の任意の有効なメールアドレスを使用できますので、[email protected]をopenid_urlフィールドに格納することはできません。 comまたは悪い[email protected]! Yahooもこの単一URLメソッドを使用しているため、それらもサポートする必要があります。
なぜ電子メールアドレスが一意であるとお考えですか?彼らはそうではないかもしれない。 2番目のopenidログインが表示され、ユーザーが既に持っているものと同じ電子メールアドレスを主張するとどうなりますか? –
電子メールはopenidを使用していない名前付きアカウント用です。 openidを独占的に使用するように私のアプリケーションを変更しました。 (十分な人にはgoogle/yahooアカウントがあると思うので、これに問題はありません)。 – epochwolf