Как перенаправить пользователя на страницу входа из промежуточного программного обеспечения в django rest framework? - PullRequest
0 голосов
/ 17 апреля 2019

Я работаю с 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 Ответ

0 голосов
/ 19 апреля 2019

Я нашел это: 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, то перенаправить пользователя настраница входа.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...