Set a request id on all requests (#6922)
The request id is extracted from an header set using the REQUEST_ID_HEADER setting or generated using the default Python random number generator.
This commit is contained in:
parent
4f3359f075
commit
59f536e998
|
@ -1,5 +1,7 @@
|
|||
import logging
|
||||
import datetime
|
||||
import random
|
||||
import struct
|
||||
try:
|
||||
import threading
|
||||
except ImportError:
|
||||
|
@ -108,6 +110,18 @@ class OpenedSessionCookieMiddleware(object):
|
|||
domain=app_settings.A2_OPENED_SESSION_COOKIE_DOMAIN)
|
||||
return response
|
||||
|
||||
class RequestIdMiddleware(object):
|
||||
def process_request(self, request):
|
||||
if not hasattr(request, 'request_id'):
|
||||
request_id_header = getattr(settings, 'REQUEST_ID_HEADER', None)
|
||||
if request_id_header and request.META.get(request_id_header):
|
||||
request.request_id = request.META[request_id_header]
|
||||
else:
|
||||
# Use Mersennes Twister rng, no need for a cryptographic grade
|
||||
# rng in this case
|
||||
random_id = random.getrandbits(32)
|
||||
request.request_id = struct.pack('I', random_id).encode('hex')
|
||||
|
||||
class StoreRequestMiddleware(object):
|
||||
collection = {}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
|
|||
)
|
||||
|
||||
MIDDLEWARE_CLASSES = (
|
||||
'authentic2.middleware.RequestIdMiddleware',
|
||||
'authentic2.middleware.LoggingCollectorMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.http.ConditionalGetMiddleware',
|
||||
|
|
Loading…
Reference in New Issue