Пользовательская аутентификация JWT Middleware Возвращение анонимного пользователя - PullRequest
0 голосов
/ 15 января 2020

В соответствии с этим обсуждением я использую решение cancan101 для этого обсуждения https://github.com/jpadilla/django-rest-framework-jwt/issues/45. Я создал файл middleware.py в своем приложении, и в моем приложении его код выглядит как

from rest_framework.request import Request
from django.utils.functional import SimpleLazyObject
from django.contrib.auth.middleware import get_user
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from django.utils.deprecation import MiddlewareMixin


def get_user_jwt(request):
    user = get_user(request)
    if user:
        return user
    try:
        user_jwt = JSONWebTokenAuthentication().authenticate(Request(request))
        if user_jwt is not None:
            return user_jwt[0]
    except:
        pass
    return user


class AuthenticationMiddlewareJWT(MiddlewareMixin , object):
    def process_request(self, request):
        assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."

        request.user = SimpleLazyObject(lambda: get_user_jwt(request))

, а мои настройки промежуточного программного обеспечения

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'CustomerWeb.middleware.AuthenticationMiddlewareJWT',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

Теперь, когда я отлаживаю в этом промежуточном программном обеспечении, я Я получаю пользователя правильно, но в моем view.py он все еще не пользователь. Что я здесь не так делаю? заранее спасибо

...