Django Rest Framework держать пользователя в системе - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть APi, который поддерживает функцию входа в систему, и всякий раз, когда я переключаю страницу на индексную страницу, пользователь больше не входит в систему, я не знаю, что я делаю неправильно.

этомои представления для входа в систему

@csrf_exempt
@api_view(["POST", "GET"])
@permission_classes((AllowAny,))
def login(request):
    username = request.data.get("username")
    password = request.data.get("password")
    if username is None or password is None:
        return Response({'error': 'Please provide both username and password'},
                        status=HTTP_400_BAD_REQUEST)
    user = authenticate(username=username, password=password)
    if not user:
        return Response({'error': 'Invalid Credentials'},
                        status=HTTP_404_NOT_FOUND)
    request.session.save()
    return Response({'Success': 'Logged in'},
                    status=HTTP_200_OK)

, и это простое тестовое представление для индексной страницы, мой session.items() пуст и request.user выводит AnonymousUser

def test_view(request):
    print(request.session.items())
    print(request.user)
    return HttpResponse(request.COOKIES.keys())

и вмои настройки у меня

'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.BasicAuthentication',
    'rest_framework.authentication.SessionAuthentication',
),

1 Ответ

0 голосов
/ 28 февраля 2019

Вы должны login() вашего пользователя после аутентификации

user = authenticate(username=username, password=password)
if not user:
    . . .
login(request, user)
...