# Middleware Middleware are pieces of code that are executed every time a request is made to the app. It is used to do pre-validations and, in our case, add global values ​​as props to each frontend render. The audit middleware is: ## **AuditUrlMiddleware** Captures the urls visited by the user and values necessary to record the urls log, according to the defined strategy. ```shell class AuditUrlMiddleware: def __init__(self, get_response): self.get_response = get_response # One-time configuration and initialization. def __call__(self, request): response = self.get_response(request) route = resolve(request.path).route if request.user.is_authenticated: user = request.user else: user = None path = request.path method = request.method try: params = request.body.decode("utf-8") except RawPostDataException: params = "" user_agent = get_device(request) ip = get_ip(request) strategy = models.AuditSettings.load().urls_log_strategy if strategy == models.AuditSettings.EVERYTHING: models.AuditUrlLog.create_url_log( path, method, params, user_agent, ip, user ) elif strategy == models.AuditSettings.ONLY_WHITELIST: if bool(models.UrlListLog.objects.filter(path=route, is_active=True)): models.AuditUrlLog.create_url_log( path, method, params, user_agent, ip, user ) elif strategy == models.AuditSettings.EXCEPT_WHITELIST: if not bool(models.UrlListLog.objects.filter(path=route, is_active=True)): models.AuditUrlLog.create_url_log( path, method, params, user_agent, ip, user ) return response ```