Как обрабатывать токен в dajngo rest, когда пользователь закрывает браузер?

Я новичок в Django rest framework и я использую токен аут Django rest, но я понятия не имею, как обрабатывать токен, когда пользователь напрямую закрывает браузер без выхода, В таком случае, что будет стандартным способом?

Также, я хочу реализовать, если пользователь уже вошел в систему, то перенаправить его на приборную панель, как это реализовать? Мои представления выглядят следующим образом.

class LoginTemplateClass(TemplateView):
    template_name = 'index.html' 

class LoginAPI(viewsets.ModelViewSet):
    serializer_class = LoginSerializer

    def post(self,request):
        try:
            serializer = self.serializer_class(data=request.data,context={'request': request})                                           
            if serializer.is_valid():
                user = serializer.validated_data['user']
                token, created = Token.objects.get_or_create(user=user)                        
                return Response(token.key,status = 200)
            return Response(serializer.errors,status = 400)            
        except Exception as e:
            return Response({},status = 500)

Как обрабатывать токен, когда пользователь напрямую закрывает браузер без выхода из системы, В таком случае какой будет стандартный способ?

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

Итак, как должен выглядеть ваш поток входа в систему

see if cookie exists -> yes, then check if token exists in your backend
     |
     -----> no, then create a token and set it on the browser cookie with a reasonable timeout.

Также я хочу реализовать, если пользователь уже вошел в систему, то перенаправление на приборную панель, как это реализовать?

Есть два способа сделать это,

  1. вы можете рендерить html-файл в операторе return вместо отправки http-ответа. Используйте функцию Render() ссылка на doc
  2. .
  3. Вы можете перенаправить функцию login на возврат другого представления, например indexView. Используйте функцию Redirect() ссылка на doc
Вернуться на верх