#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
затем перенаправит пользователя на страницу входа.
Я надеюсь, что это поможет кому-нибудь в будущем.