request.user не заполняется моим django auth backend

Я написал класс авторизации авторизации, который реализует authenticate метод и get_user метод согласно документам Django. я добавил

AUTHENTICATION_BACKENDS = ('src.lib.auth_backend.MyBackend',)

в мой файл settings.py. С помощью операторов печати я вижу, что мой код выполняется и что он возвращает объект пользователя класса, который я определил с помощью AUTH_USER_MODEL в моих settings.py.

К тому времени, когда я получу объект запроса в моей django-rest-framework has_object_permsion функция, request.user всегда установлен на AnonymousUser,

Я пропускаю шаг? Я пробовал это с и без django.contrib.auth.middleware.AuthenticationMiddleware установлен и получить тот же результат.

Этот сбой происходит в следующем модульном тесте

def test_get_user(self):
    client = APIClient() # rest_framework.test.APIClient
    client.login(username='user1',password='user1Password')
    res = client.get('/websvc/users/' + str(user.user_id) + '/') # request.user will be AnonymousUser
    self.assertEqual(res.status_code, 200) # it will be 403, which is appropriate for AnonymousUser

1 ответ

Несколько вещей могут быть неправильными.

Вы создали пользователя до запуска теста?

Что возвращает client.login?

Покажите нам весь тест, чтобы сказать вам, что не так.

Другие вопросы по тегам