我的設置有以下MIDDLEWARE_CLASSES定義:如何Django的AuthenticationMiddlewear不返回用戶對象在請求
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'.
我的理論認爲這與我的cookies/session/cas有關,因爲它會與新的瀏覽器一起工作。
我在想象什麼可能會出錯,所以我可以進一步調查。 AuthenticationMiddlewear能否返回沒有用戶屬性集的請求對象?這應該是導致django_cas中的斷言失敗的唯一原因。
如果會話過時可以request.user未定義,它是一個單獨的AuthenticationMiddleware被忽略的問題?
快速注意,使用''python manage.py clearsessions''可能無濟於事,因爲它只會清理過期的會話:https://docs.djangoproject.com/en/dev/ref/django-admin /#clearsessions – amjoconn 2014-04-03 14:49:06