我正在使用django-mongoengine与django一起使用mongodb . 我手动在用户集合中手动创建了一个包含user_data的文档,如下所示:

当我集成模块并运行项目时,会自动创建 userdjango_session

现在我尝试像这样验证用户:

def loginAction(request):
    if request.is_ajax():
        email = request.POST.get('email')
        password = request.POST.get('password')

        user = authenticate(email=email, password=password)
        print user
        if user:
            if user.is_authenticated():
                login(request, user)
                return HttpResponse(json.dumps({'RESULT':'SUCCESS'}),content_type="application/json")
        else:
            return HttpResponse(json.dumps({'RESULT':'FAILURE'}),content_type="application/json")

但是,当我尝试打印用户时,它返回None . 我尝试了几个代码,但我仍然无法进行身份验证 .

我的settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_mongoengine',
    'django_mongoengine.mongo_auth',
    'login_app',
]

MONGODB_DATABASES = {
    'default': {'name': 'picknbox'}
}


DATABASES = {
    'default': {'ENGINE': 'django.db.backends.dummy'}
}

AUTH_USER_MODEL = 'mongo_auth.MongoUser'

AUTHENTICATION_BACKENDS = (
    'django_mongoengine.mongo_auth.backends.MongoEngineBackend',
)

SESSION_ENGINE = 'django_mongoengine.sessions'

我的问题是如何使用django-mongoengine后端进行身份验证?

注意:我使用自定义后端对sqlite数据库尝试了相同的方法,并且它有效 . 我能够进行身份验证以及登录和注销工作正常 .

编辑:我在AUTHENTICATION_BACKENDS中检查了MongoEngineBackend类,它被定义为:

from django.contrib import auth


class MongoEngineBackend(object):
    """Authenticate using MongoEngine and mongoengine.django.auth.User.
    """

    supports_object_permissions = False
    supports_anonymous_user = False
    supports_inactive_user = False

    authenticate = auth.backends.ModelBackend.__dict__["authenticate"]
    get_user = auth.backends.ModelBackend.__dict__["get_user"]

所以它使用了django的auth .