gpt4 book ai didi

Django 自定义中间件 request.user 总是 AnonymousUser

转载 作者:行者123 更新时间:2023-12-05 07:11:15 25 4
gpt4 key购买 nike

我正在使用 Django 2.2DRF

在我的应用程序中,根据用户属性,我需要将 request.user 更改为不同的用户。

class CustomMiddleware:
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
print(request.user)

response = self.get_response(request)
return response

print(request.user) 始终提供 AnonymousUser 对象,但它在 View 中提供经过身份验证的用户。

如何获取中间件中的用户?

中间件层次结构

MIDDLEWARE = [
'django_hosts.middleware.HostsRequestMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',

'whitenoise.middleware.WhiteNoiseMiddleware',

'debug_toolbar.middleware.DebugToolbarMiddleware',
'silk.middleware.SilkyMiddleware',
'django_hosts.middleware.HostsResponseMiddleware',

'oauth2_provider.middleware.OAuth2TokenMiddleware',
'myapp.middleware.CustomMiddleware',
]

最佳答案

通过在 AUTHENTICATION_BACKENDS 列表中使用 oauth2_provider.backends.OAuth2Backend 解决了这个问题。

AUTHENTICATION_BACKENDS = (
'oauth2_provider.backends.OAuth2Backend',
# Uncomment following if you want to access the admin
#'django.contrib.auth.backends.ModelBackend'
'...',
)

关于Django 自定义中间件 request.user 总是 AnonymousUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60846831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com