Как перенаправить пользователя на страницу входа из промежуточного программного обеспечения в django rest Framework?

#django-rest-framework #django-middleware

#django-rest-framework #django-промежуточное программное обеспечение

Вопрос:

Я работаю над django rest framework созданием моего api , и в интерфейсе, который я использую Angular framework .

Я разработал обычай middleware , который перехватывает каждый запрос. Я хочу выйти из системы пользователя, когда условие не выполнено.

 class MyCustomMiddleware(MiddlewareMixin):
    def process_request(self, request):
        if not request.user.is_authenticated():
            #user is not allowed to do this request 
             #logout the user
 

Я знаю, что из backend -за того, что я не могу перенаправить пользователя на страницу входа, это front end персонал, но я хочу отправить уведомление или что-то в интерфейс, чтобы сообщить ему, что он должен перенаправить пользователя на страницу входа.

Я пытался поднять PermissionError , HTTP_403_FORBIDDEN но ни один из них не сработал.

Я думал о добавлении некоторой вещи (атрибута / параметра) в заголовок запроса, чтобы во интерфейсном перехватчике я проверял, существует ли этот атрибут / параметр, но я не смог найти способ для этого.

Я также попытался установить для пользователя запроса значение None: request.user=None но это также не удалось.

Может кто-нибудь сказать мне, возможно ли это или нет сначала?

Если да, то как я могу этого добиться?

Большое спасибо.

Ответ №1:

Я нашел это: D

 from django.http.response import HttpResponseForbidden


class MyCustomMiddleware(MiddlewareMixin):
   def process_request(self, request):
      if not request.user.is_authenticated():
         #user is not allowed to do this request 
         return HttpResponseForbidden()
 

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

Я надеюсь, что это поможет кому-нибудь в будущем.