从多个身份验证后端获取用户

2024-04-29 09:49:05 发布

您现在位置:Python中文网/ 问答频道 /正文

Django 2.2、python 3.6

我在应用程序中使用了两个身份验证后端:

GRAPHENE = {
    'SCHEMA': 'my_main_app.all_schemas.schema',
    'MIDDLEWARE': [
        'graphql_jwt.middleware.JSONWebTokenMiddleware',
    ],
}

AUTHENTICATION_BACKENDS = [
    'graphql_jwt.backends.JSONWebTokenBackend',
    'django.contrib.auth.backends.ModelBackend',
]

我可以通过graphql查询方法获取用户信息,如:

@login_required
def resolve_curr_user(self, info, parent_id):
    user = info.context.user

但我无法从视图中获取用户:

def curr_user(request):
    request.user # user is None

我正在将正确的标题传递给视图请求:

const headers = new Headers();
headers.append('Authorization', `JWT ${auth_token}`);
const init = {
    method: 'GET',
    headers: headers,
    mode: 'cors',
    cache: 'default'
};

const response = await fetch(`/curr_user_route`, init);

对graphql查询进行身份验证时,django从JSONWebTokenBackend类调用authenticate方法

如何告诉django对常规视图调用相同的方法?


Tags: django用户infoauth身份验证视图defjwt