我正在使用django-mongoengine将mongodb与django一起使用。我手动在用户集合中手动创建了一个包含user_data的文档,如下所示:
我集成模块并运行项目时自动创建了user
和django_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。