E-mailを利用したユーザ認証
Djangoのユーザ認証は、ユーザ名とパスワードにて行いますが
メールアドレスとパスワードを利用した認証をするシステムを作りたい場合があります。
django-emailauthを使って構築してみたいと思います。
仕様
- 1ユーザに対し多メールアドレスに対応。
- 登録URLは'/register/'とします。
- ログイン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に追加します。 実行環境にあわせて対応してください。
- EMAIL_HOST
- EMAIL_HOST_USER
- EMAIL_HOST_PASSWORD
- EMAIL_PORT
- EMAIL_USE_TLS
次にURLを設定するためurls.pyを編集します。
urls.py
…
urlpatterns = patterns('',
…
(r'', include('emailauth.urls')),
…
)
以上で設定は完了です。
動作確認
'/register/'にアクセスして以下のような登録画面が表示されます。
(スクリーンショットはwin-django.comのcssを適応させています。)
以下に示した以外にも機能があります。
詳しくはソースを参照してください。




