それらは一緒にうまく機能します-私は先日これを設定しました(あなた自身のものを作成するのと同じくらい簡単なので、django-profilesを使用する必要がなかったことを除いて)。
- ユーザーは、確認する電子メールを送信するdjango-registrationを使用して通常のアカウント(contrib.auth)を設定できます。つまり、DBにユーザー名/電子メール/パスワードを作成します。
- または、twitter / facebook / googleなどですぐにサインインすると、ダミーのパスワードを使用してcontrib.authユーザーが自動的に作成されます(電子メールがない場合もあります)。
いくつかのポイントと制限:
- ソーシャルメディアプロファイルでサインインすると、contrib.auth.userが自動的に作成されます。そのユーザー名がすでに存在する場合、UUIDが追加されます-これは醜く、django-social-authはまだこの問題に対処していないようです-簡単な解決策は、ユーザーがサインアップ後にユーザー名を変更できるようにすることです。理想的には、Twitterでサインインすると、詳細がDBに保存される前に(後ではなく)詳細を調整する機会が与えられます。
- 同様に、ダミーのパスワードが設定されます。これにより、ユーザーは既存のパスワードを入力できないため、組み込みのdjangoパスワード変更フォームを使用してパスワードをリセットすることが困難になります(ハッシュできない文字列として設定されているため)。
- Twitterにサインアップしたユーザーが後で自分のFacebookアカウントを関連付けたい場合を考慮する必要があります-django-social-authアカウントはこれに対応しており、複数のサードパーティのサインインを1つのアカウントに簡単に関連付けることができます
- Twitterはユーザーのメールアドレスを開示していないので、ユーザーにメールアドレスを提供してデータベースに保存するように促すことができます。これに伴う問題は、ソーシャルを使用する目的全体を否定する検証が必要になることです。 auth!
django-social-authは素晴らしいプロジェクトであり、常に最新の状態にあるconvore Google Groupのグループと積極的に開発されているので、ぜひお勧めします。設定も非常に簡単です。ログインフローを明確にし、これを使用することの潜在的な制限を知っていることを確認してください。
編集:
この投稿は少し古くなっています
- django-social-authはpython-social-authになりました
- django-allauth:OPは、最近人気が出ているdjango-allauthについて言及しました。私はそれを使用していませんが、認証、登録、およびプロファイルの優れたドロップイン代替品のようです。
- 構成可能なユーザーモデル:Django 1.5では、モジュールに構成可能なユーザーモデル
auth
が導入されたため、ユーザーに使用するフィールドを編集できるようになりました(電子メールのみ、ユーザー名なしなど)。これは、別のテーブルに参加せずにプロファイルのような情報をユーザーに追加する場合にも役立ちます(django-profilesやOneToOne
カスタムプロファイルモデルとの関係の場合のように)