【发布时间】:2021-11-24 17:16:43
【问题描述】:
我正在使用以下基于类的视图并将UserPassesTestMixin 应用于它以检查一些先决条件。
class SomeTestView(UserPassesTestMixin, APIView):
def test_func(self):
return check_precondition(self.request.user)
def get(self, request):
print("inside view")
print("user: ", request.user)
print("is_authenticated? ", request.user.is_authenticated)
return Response({"status": "success"})
以下是我的前提条件:
def check_precondition(user):
print("in user_passes_test")
print("user: ", user)
print("is_authenticated? ", user.is_authenticated)
return True
这是我得到的输出:
in user_passes_test
user: AnonymousUser
is_authenticated? False
inside view
user: John Doe/john@test.domain
is_authenticated? True
我无法理解的是,为什么 request.user 匿名在 user_passes_test 检查中。我想根据用户对象运行一些前置条件检查。
这是我的中间件序列:
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
我在 Django 3.1.7 和 djangorestframework 3.12.3。
【问题讨论】:
标签: python django django-rest-framework django-views