Django: Создание вручную сессионного cookie и последующая аутентификация с его помощью

Я использую Django-Rest-Framework с аутентификацией токенами. В моем приложении для Android я хочу открыть webview и отобразить некоторое содержимое из представления, которое требует аутентификации.

Из-за этого я написал вызов rest для получения идентификатора сессии.

/rest/getsessionid/ => выглядит следующим образом:

from django.contrib.sessions.backends.db import SessionStore

class GetSessionKeyView(APIView):

    def get(self, request, format=None):
        if request.user.is_authenticated:
            s = SessionStore()
            s.create()
            return Response({'sessionid': s.session_key})
        return Response({'notauthenicated': True})

К сожалению, возвращенный sessionid не работает. Почему?

Я наконец-то нашел способ.

class GetSessionKeyView(APIView):

    def get(self, request, format=None):
        if request.user.is_authenticated:
            if 'HTTP_COOKIE' not in request.META or request.META['HTTP_COOKIE'] == '':
                login(request, request.user, backend='django.contrib.auth.backends.ModelBackend')
                return Response({
                    'sessionid': request.session.session_key
                })
            else:
                return Response({'ERROR': 'Cookies not allowed'})
        return Response({'notauthenicated': True})

Для создания сеанса необходимо снова войти в систему.

EDIT: Не забудьте заблокировать cookies для защиты от CSRF-атак.

Вернуться на верх