Django 1.8 request.user被删除

时间:2018-01-12 14:02:53

标签: django django-middleware

我正在使用django 1.8以及mongoengine和一个自定义中间件,该中间件应该为django请求添加用户和toked。

这两个在请求的标题中传递。

中间件类如下:

from models import MongoToken

class TokenAuthenticationMiddleware(object):
    def process_request(self, request):
        if "HTTP_AUTHORIZATION" not in request.META:
                return
        tokenkey = get_authorization_header(request).split()[1]
        token = MongoToken.objects.get(key=tokenkey)
        user = User.objects.get(username=request.META.get("HTTP_USERNAME"))
        if token.key == tokenkey and token.user.is_active:
            request.user = user
            request.token = tokenkey

我还把它放在settings.py文件的MIDDLEWARE_CLASSES块中:

MIDDLEWARE_CLASSES = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'myproject.middleware.MongoAuthenticationMiddleware',
    'myproject.middleware.TokenAuthenticationMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

当达到考虑的视图时,我的令牌就在这里,因为感谢标题参数,但用户是空的。 然后我想知道我是否做错了,因为它不起作用。

感谢您的帮助。

亚历。

0 个答案:

没有答案