[Django] ログインフィルターを作ってみる
移転しました。
WEBアプリでよくログインしているか、していないかを判断するフィルターなどを作る事がある。
DjangoでもMiddlewareを使えばできそうなので、作ってみる。
参考URL
http://michilu.com/django/doc-ja/middleware/
cd SRC vi settings.py ----- MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware', 'site.app.middleware.LoginMiddleware', ←←← ここにMiddlewareのクラス名追加!!!順番重要。SessionMiddlewareを先に指定しないと、request.sessionとか使えなかったりする。 ) -----
クラス
site/app/middleware.py に以下を記載。
# -*- coding: utf-8 -*- from django.template import Context from django.template.loader import get_template from django.shortcuts import render_to_response class LoginMiddleware(object): def _is_login_ok(self, session_key): """ ログインチェックを行う """ if ログインOK: return True else: return False def process_request(self, request): if self._is_login_ok(request.session.session_key): # リクエストされたページに遷移 return None else: # ログインページに遷移させる return render_to_response('login.html')