セッションデータがprocess_response
のクッキーに設定されています。SessionMiddleware
です。この関数は設定やrequest.user
を使用しないため、ユーザーがログインしているユーザーでも匿名ユーザーでも、このメソッドの内部を知る方法はありません。したがって、セッションCookieをブラウザに送信することを無効にすることはできません。
ただし、この機能を使用する場合は、SessionMiddleware
をサブクラス化してprocess_response
を上書きできます。
from django.contrib.sessions.middleware import SessionMiddleware
from django.conf import settings
class NewSessionMiddleware(SessionMiddleware):
def process_response(self, request, response):
response = super(NewSessionMiddleware, self).process_response(request, response)
#You have access to request.user in this method
if not request.user.is_authenticated():
del response.cookies[settings.SESSION_COOKIE_NAME]
return response
そして、あなたはSessionMiddleware
の代わりにあなたのNewSessionMiddleware
を使用することができます。
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'myapp.middleware.NewSessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
)
セッションは、コード内でアクセスまたは変更しないと作成されません。 – sbaechler