Пользовательское промежуточное ПО аутентификации для определенных маршрутов в Django
Я реализовал пользовательскую настройку аутентификации для своего проекта Django. Есть несколько пользовательских ролей для пользователей. Теперь я хочу убедиться, что некоторые специфические маршруты могут быть приемлемы только для определенных ролей пользователей. Скажем, edit/uploaded-files
может быть допустимым только для пользователя с role = 1
. Поэтому я создал промежуточное ПО для этого.
from django.shortcuts import redirect
class HRMiddleware(object):
def process_request(self, request):
user = request.user
if not (user and user.is_authenticated() and user.email):
return redirect('')
if user.role_id.id != 1:
raise 403
return None
Теперь как я могу применить это промежуточное ПО только для некоторых определенных маршрутов?
Я нашел несколько решений, например, использование декоратора @decorator_from_middleware(MyMiddleware)
и указание маршрутов в middleware. Есть ли лучший способ сделать это? Вообще-то я разработчик Laravel. Это мой первый проект Django. В Laravel мы можем указывать промежуточные продукты в маршрутах. Пожалуйста, помогите мне
Попробуйте это:
URLS = ['/some_path/']
class HRMiddleware(object):
def process_request(self, request):
user = request.user
if not (user and user.is_authenticated() and user.email) and request.path in URLS:
return redirect('')
if user.role_id.id != 1:
raise 403
return None