django что мне нужно для аутентификации после входа в систему? - PullRequest
0 голосов
/ 11 апреля 2020

Я следовал примеру в: https://docs.djangoproject.com/en/3.0/topics/auth/default/#django .contrib.auth.login

from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)
    if user is not None:
        login(request, user)
        # Redirect to a success page.
        ...
    else:
        # Return an 'invalid login' error message.

Этот код, похоже, не возвращает никакого токена или какого-либо рода клиенту, но просто перенаправление.

В других кодах, где django проверяет аутентификацию, django проверяет request.user.is_authenticated. Нужно ли устанавливать это самостоятельно?

from django.conf import settings
from django.shortcuts import redirect

def my_view(request):
    if not request.user.is_authenticated:
        return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))

Чтобы аутентифицироваться декораторами, такими как @login_required или иметь правильное значение для request.user.is_authenticated, что мне нужно отправлять и получать от клиента (ReactJS)

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете вернуть JsonResponse.

from django.http import JsonResponse

И после успешного входа в систему

return JsonResponse ({
    'token': user.token,
})
...