我的设置定义了以下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'.
我推测这与我的cookies/session/cas处于糟糕的状态有关,因为它可以在新的浏览器上工作。
我正在尝试想象可能出了什么问题,以便我可以进一步调查。AuthenticationMiddlewear可以返回未设置用户属性的请求对象吗?这应该是导致django_cas中断言失败的唯一原因。
如果会话是陈旧的,request.user是否可能是未定义的,这是一个仅忽略AuthenticationMiddleware的问题?
发布于 2010-07-30 11:49:35
request.user不是未定义的,但是访问它(通过LazyUser)会抛出异常。这是因为我更改了django_cas后端的名称,但现有会话仍然设置了旧的后端名称。
如果您更改django_cas后端(或任何身份验证后端)的名称,将导致您之前的所有会话抛出服务器错误。
发布于 2016-08-30 09:21:31
您有未应用的迁移;在应用它们之前,您的应用程序可能无法正常工作。运行'python manage.py migrate
‘来应用它们。
https://stackoverflow.com/questions/3368158
复制