Implementé una configuración de autenticación personalizada para mi proyecto Django. Hay algunos roles de usuario para los usuarios. Ahora quiero asegurarme de que algunas rutas específicas sean aceptables solo para roles de usuario específicos. Digamos que los edit/uploaded-files pueden ser aceptables solo para el usuario con role = 1 . Así que creé un middleware para eso.
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 Ahora, ¿cómo puedo aplicar este middleware solo para algunas rutas específicas? Encontré algunas soluciones como usar el decorador @decorator_from_middleware(MyMiddleware) y especificar las rutas en middleware. ¿Hay alguna manera mejor de hacer esto? En realidad soy un desarrollador de Laravel. Este es mi primer proyecto Django. En laravel podemos especificar los middlewares en las rutas. por favor, ayúdame
Prueba esto:
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