bpssl のDjango SSL対応アプリをリリースしました
今日、bpsslをリリースしました。bpsslはBeProudで欲使っているDjango用のSSL対応アプリです。アクセスする時にHTTPSが必須なURLを指定することがよくありますよね?例えば、ログイン画面をHTTPSでしかアクセスできないようにする。ただし、HTTPでアクセスした場合、HTTPSのほうのURLにリダイレクトしたいこともよくあります。bpsslはその対応を簡単にできるようなアプリです。
ウェブサーバーで対応することもありますが、設定変更も面倒だし、アプリケーションロジックをラップしたいことが多いので、アプリケーションレベルで対応します。
使い方は結構簡単
まずは、ポッケージをPIPでインストールします:
pip install bpssl
もしくはeasy_installで:
easy_install bpssl
次に、'beproud.django.ssl'をsettings.pyのINSTALLED_APPSに追加してください。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
#...
'beproud.django.ssl',
#...
)
それから、'beproud.django.ssl.middleware.SSLRedirectMiddleware'をMIDDLEWARE_CLASSESに追加してください。
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
#...
'beproud.django.ssl.middleware.SSLRedirectMiddleware',
#...
)
次はSSL_URLSの正規表現んを設定する。
SSL_URLS = (
'^/login/',
'^/purchase/'
# ...
)
ssl_view()というビューデコレータもありますので、ビューレベルでもSSL対応ができます。
Django側はこれで以上ですが、やっぱりウェブサーバーでの設定も必要ですが、それも簡単です。
もともと、bpsslはDjango Snippetsに投稿したSSLミドルウエアから、インスピレーションを得た。以下のスニペットの機能にほぼ対応しています。
http://djangosnippets.org/snippets/880/http://djangosnippets.org/snippets/240/http://djangosnippets.org/snippets/1999/
詳しくはbpsslのドキュメントもしくは、ソースコードを見ててください!