E-mailを利用したユーザ認証

Djangoのユーザ認証は、ユーザ名とパスワードにて行いますが
メールアドレスとパスワードを利用した認証をするシステムを作りたい場合があります。
django-emailauthを使って構築してみたいと思います。

仕様

  1. 1ユーザに対し多メールアドレスに対応。
  2. 登録URLは'/register/'とします。
  3. ログインURLは'/login/'とします。

導入

まず、Downloadsからzipもしくはtgzファイルをダウンロードし、解凍し配置してください。
settings.pyの'INSTALLED_APPS'に登録します。

settings.py

…
INSTALLED_APPS = (
    …
    'emailauth',
    …
)

'django.contrib.auth.models.User'だけでなく、'UserEmail'モデルを作成するため

manage.py syncdb

を実行してください。

その他の設定は、'example/seetings.py'を参照してください。

settings.py

…
AUTHENTICATION_BACKENDS = (
    'emailauth.backends.EmailBackend',
    'emailauth.backends.FallbackBackend',
)
…

LOGIN_REDIRECT_URL = '/account/'
LOGIN_URL = '/login/'

EMAILAUTH_USE_SINGLE_EMAIL = False

仮登録とConfirm URLの通知するために以下の設定をsettings.pyに追加します。 実行環境にあわせて対応してください。

次にURLを設定するためurls.pyを編集します。

urls.py

…
urlpatterns = patterns('',
    …
    (r'', include('emailauth.urls')),
    …
)

以上で設定は完了です。

動作確認

'/register/'にアクセスして以下のような登録画面が表示されます。
(スクリーンショットはwin-django.comのcssを適応させています。)
以下に示した以外にも機能があります。
詳しくはソースを参照してください。

登録画面 ('/register/')

emailauth01

確認画面 ('/register/continue/メールアドレス/')

emailauth03

アカウント画面 ('/account/')

emailauth04

メールアドレス追加 ('/account/addemail/')

emailauth05

ログイン画面 ('/login/')

emailauth02

twitter 2009-05-25 17:02:57.029137

関連ページ

参照サイト

Recent Updates

URLConf Tip 01 - キャプチャの有無にかかわらず同一のviewで処理する
Markdownの入力補助"wmd"をAdmin siteで使う
ModelFormでfieldのwidgetを変更する
動的なformを作る 6 - Dynamic Inline Admin site編
Formsetsを使う3 - inlineformset_factory編
動的なformを作る 5 - django-dynamic-formset編
Formクラスからメディアを定義する
複数のmodelを結合する 2 - Proxy model編
複数のmodelを結合する 1
ModelFormでfieldの表示順番を変える
Admin siteのwidgetを個別に変更する
formfield_overridesを使ってAdmin siteのwidgetを変更する
Admin siteのlist_displayをカスタマイズする - リンク編
Admin siteのlist_displayをカスタマイズする - 基本編
Admin siteのTextareaの高さを自在に変更する - admin.py編