在身份验证中间件之后调用自定义中间件
Calling a custom middleware after Authentication Middleware
在 django REST framework 身份验证中间件中,仅在执行视图中间件之后在请求中设置用户对象,而在此之前执行任何自定义中间件。在身份验证中间件
设置用户对象后,是否可以通过某种方式更改此顺序并执行自定义中间件
作为替代方案,我在中间件本身中创建了用户对象,它工作正常,但这只是一个 hack。
common.py中定义的中间件是:
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'application.middlewares.IPsBlockerMiddlewareHook',
'application.middlewares.UserMiddleware',
]
有问题的自定义中间件是 UserMiddleware。我需要它在身份验证后执行,但似乎并非如此
中间件在请求到来时按自上而下的顺序执行,在发送响应时按自下而上的顺序执行。您可以在身份验证中间件之后指定您的自定义中间件,然后它将 运行。
在 django REST framework 身份验证中间件中,仅在执行视图中间件之后在请求中设置用户对象,而在此之前执行任何自定义中间件。在身份验证中间件
设置用户对象后,是否可以通过某种方式更改此顺序并执行自定义中间件作为替代方案,我在中间件本身中创建了用户对象,它工作正常,但这只是一个 hack。
common.py中定义的中间件是:
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'application.middlewares.IPsBlockerMiddlewareHook',
'application.middlewares.UserMiddleware',
]
有问题的自定义中间件是 UserMiddleware。我需要它在身份验证后执行,但似乎并非如此
中间件在请求到来时按自上而下的顺序执行,在发送响应时按自下而上的顺序执行。您可以在身份验证中间件之后指定您的自定义中间件,然后它将 运行。