我的设置定义了以下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的问题吗?
答案 0 :(得分:1)
request.user未定义,但访问它(通过LazyUser)会引发异常。发生这种情况是因为我更改了django_cas后端的名称,但现有的会话仍然设置了旧的后端名称。
如果更改django_cas后端(或任何身份验证后端)的名称,则会导致以前的所有会话都出现服务器错误。
答案 1 :(得分:0)
您有未应用的迁移;在应用之前,您的应用可能无法正常运行。
运行' Sub foo()
Dim obj As Object
Dim row_no As Integer
Set obj = ActiveSheet.Buttons(Application.Caller)
With obj.TopLeftCell
row_no = .Row
End With
MsgBox "The Button is in the row number " & row_no
End Sub
'应用它们。