Обработка структуры отдыха django + vue SPA auth - PullRequest
0 голосов
/ 16 сентября 2018

Как получить те же функциональные возможности, которые django предоставляет для аутентифицированного пользователя (глобальный объект пользователя для извлечения данных для профиля пользователя и т. Д.) В vue, для одностраничного приложения (конечно, с помощью Vue Router).

Я хочу сказать, что я не знаю, как создать промежуточное программное обеспечение для vue, эквивалентное промежуточному программному обеспечению django, для обеспечения входа пользователя в систему после того, как он предоставил имя пользователя и пароль.

Я знаю, что могу использовать django restфреймворк jwt для реализации конечной точки /api-token-auth/ для получения необходимого токена (сохранения его в localStorge, чтобы я мог поместить его в заголовки axios), чтобы иметь возможность извлекать информацию из API, но у меня нет сеанса пользователя, кромемаркер, конечно, у меня нет никакой информации о пользователе, переданном в шаблоны.

Как я могу передать глобальный объект пользователя каждому шаблону?Есть ли простой способ сделать это?

Заранее спасибо.

1 Ответ

0 голосов
/ 17 сентября 2018

Сеансовая аутентификация может быть реализована с помощью Django REST Frameworks путем добавления SessionAuthentication class к settings.py следующим образом.

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
    ),
   'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}

Для аутентификации будет использоваться Django's бэкэнд сеанса по умолчанию.Подвох, вам нужно убедиться, что вы включили действительный токен CSRF для любых «небезопасных» вызовов методов HTTP - PUT, PATCH, POST, DELETE.

Для доступа к текущему пользователю вы можете создать конечную точку API /users/current с

class CurrentUserView(APIView):
    def get(self, request):
        serializer = UserSerializer(request.user)
        return Response(serializer.data)
...