В моих настройках определены следующие MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_cas.middleware.CASMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Время от времени я получаю следующее исключение из django-cas при любом просмотре страницы:
Traceback (most recent call last):
File "/storage/virtualenvs/service.iqc.ca/lib/python2.6/site-packages/django/core/handlers/base.py", line 80, in get_response
response = middleware_method(request)
File "/storage/virtualenvs/service.iqc.ca/lib/python2.6/site-packages/django_cas/middleware.py", line 25, in process_request
assert hasattr(request, 'user'), error
AssertionError: The Django CAS middleware requires authentication middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware'.
Я предполагаю, что это как-то связано с тем, что мои cookie / сессия / cas находятся в плохом состоянии, потому что они будут работать с новым браузером.
Я пытаюсь представить, что может пойти не так, чтобы я мог продолжить расследование. Может ли AuthenticationMiddlewear когда-либо возвращать объект запроса, для которого не установлен атрибут пользователя? Это должно быть единственным, что приводит к сбою assert в django_cas.
Если сессии устарели, может быть request.user быть неопределенным, и это проблема, которая игнорируется только AuthenticationMiddleware?