本文将带您了解关于Django-使用mongoengineDB进行身份验证的新内容,同时我们还将为您解释djangoormmongodb的相关知识,另外,我们还将为您提供关于DjangoMongodb
本文将带您了解关于Django-使用mongoengine DB进行身份验证的新内容,同时我们还将为您解释django orm mongodb的相关知识,另外,我们还将为您提供关于Django Mongodb引擎:身份验证,会话和用户模型、Django Tastypie:如何使用API密钥进行身份验证、django – MongoEngine _types和_cls字段、django – 使用MongoEngine创建用户注册页面的实用信息。
本文目录一览:- Django-使用mongoengine DB进行身份验证(django orm mongodb)
- Django Mongodb引擎:身份验证,会话和用户模型
- Django Tastypie:如何使用API密钥进行身份验证
- django – MongoEngine _types和_cls字段
- django – 使用MongoEngine创建用户注册页面
Django-使用mongoengine DB进行身份验证(django orm mongodb)
我想使用mongoengine db在Django项目中处理身份验证。
我尝试了一些有关此问题的示例,这些问题已在旧问题中得到解答,但并未运行。我正在使用Django
1.6和mongoengine。一切都已安装,运行,并且我可以创建文档并将其保存到Mongoengine DB。
我正在追踪http://mongoengine-
odm.readthedocs.org/en/latest/django.html
我得到以下错误:
当我跑步时:
>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user('john','lennon@thebeatles.com','johnpassword')
我得到这个:
Traceback (most recent call last):
File "<console>",line 1,in <module>
File "/REBORN/reb_env/local/lib/python2.7/site-packages/django/db/models/manager.py",line 273,in __get__
self.model._meta.object_name,self.model._meta.swapped
AttributeError: Manager isn't available; User has been swapped for 'mongo_auth.MongoUser'
>>>
我真的不明白两件事:
-是否必须创建并定义将存储用户的数据库,否则将自动创建用户?
-经理是什么?我还没有定义任何经理的东西
在开始的时候,我认为寄存器已保存在数据库中。调用了“ mongo_auth.MongoUser”,但没有将其保存在任何地方。
这是模型:
# Create your models here.
from mongoengine import *
class Profile(Document):
email = StringField(required=True)
first_name = StringField(max_length=50)
last_name = StringField(max_length=50)
class auth_user(Document):
username = StringField(max_length=50)
email = StringField(max_length=50)
password = StringField(max_length=50)
settings.py已按照手册所述正确配置。
编辑@cestDiego:
我的设置完全相同,我注意到了Db后端,因为它创建了一个我不感兴趣的数据库,因为我使用mongo
…无论如何,我现在使用的是mongoengine.django.auth import用户,但是当我尝试时创建一个用户,它返回我:
>>> user = User.objects.create_user('john','johnpassword')
Traceback (most recent call last):
File "<console>",in <module>
AttributeError: 'QuerySet' object has no attribute 'create_user'
也许我们正在自定义身份验证,这就是为什么不起作用,不知道的原因。你也有这个问题吗?
第二编辑:
我正在阅读,配置正确的设置后,我们必须使用Django的auth,就像我们所做的一样。
然后必须从django.contrib.auth导入import
authenticate并使用Django文档中提供的authenticate,希望对您有所帮助。
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from game.models import *
from mongoengine import *
from models import User
from django.contrib.auth import authenticate
def login(request):
user = authenticate(username='john',password='secret')
if user is not None:
# the password verified for the user
if user.is_active:
print("User is valid,active and authenticated")
else:
print("The password is valid,but the account has been disabled!")
else:
# the authentication system was unable to verify the username and password
print("The username and password were incorrect.")
Django Mongodb引擎:身份验证,会话和用户模型
问题!我正在使用Django nonrel和Django Mongodb引擎.
我希望我不会犯太多错误:)
1)是Django用户认证系统和Django会话
系统工作正常?因为我在allbuttonspressed.com上看到了
身份验证和管理界面存在问题
部分与第三方书面认证后端让我思考
django身份验证系统不能与mongodb一起使用:
You can only edit users in the admin interface if you add
“djangotoolBox” to your INSTALLED_APPS. Otherwise you’ll get an
exception about an unsupported query which requires JOINs.Florian Hahn has also written an authentication backend which provides
permission support on non-relational backends. You should use that
backend if you want to use Django’s permission system.
2)如果身份验证系统正常,我该如何添加字段
用户模型?我在Django文档上看到了实现这一目标的方法
要去的是用OnetoOnefield定义一个模型到用户模型
(“user = models.OnetoOneField(User)”)并定义我们的其他字段
想要那个模特.我认为它必须是sql的正确方法
数据库.但是像Nolong这样的mongodb对我来说似乎不对,如果
我没弄错,它创建了一个新的集合并放入每个文档
用于将文档链接到用户文档的用户字段
集合(完全像外键).这似乎不是一个
Nosql方式(嗯,这只是我的感觉,但因为我只是一个
初学者我可能错了,不要犹豫纠正我).有没有
建议直接向用户模型添加字段的方法?
3)当在Django中使用Model时,它将所有字段放入
文件,即使它们是空的吧?这不是浪费空间
如果它们是空的,写下文档中的很多字段名称?
4)这个问题更多的是关于Mongodb本身而不是引擎,但我会
不管怎么说,你可能会得到答案:多少空间呢
采取索引集合中的字段?
没想到我会这么写,我希望你们有些人有
勇气读我!
提前致谢,
Nolhian
解决方法
>我在Google AppEngine项目中使用django-nonrel.我正在使用其他自定义应用程序,如“djangotoolBox”,以及GAE的一些后端.管理面板和标准Django身份验证工作得非常好.我怀疑MongoDB是一样的(就像你提供的报价中提到的那样)
>你是对的.标准方法绝对适用于关系数据库,但对Nosql数据库可能无效或无效.典型的情况是将数据复制到另一个表,因此您不必执行JOIN.我认为您可以简单地将User模型子类化并将您的字段添加到自定义模型(docs).
Django Tastypie:如何使用API密钥进行身份验证
我正在用TastyPie制作内部API。我有
from tastypie.authentication import ApiKeyAuthenticationclass MyResource(ModelResource): Meta: authentication = ApiKeyAuthentication()
禁用Auth规则后,我的API效果很好。启用它后,无论尝试什么,我都会得到401(未经授权)的响应。
我敢肯定,一旦您看到了它的实际情况,这就是其中的一件事,但与此同时,请告知如何提出请求(GET)。
答案1
小编典典将用户名和api_key参数添加到您的GET变量中。确保您拥有
curl http://localhost:8000/api/v1/books/?username=issackelly\&api_key=123456789adfljafal
设置时,请确保遵循docs的其他说明:
ApiKey身份验证
作为要求敏感数据(例如密码)的一种替代方法,ApiKeyAuthentication允许您仅收集用户名和计算机生成的api密钥。Tastypie专门为此目的提供了特殊的模型,因此您需要确保自己在INSTALLED_APPS中。
Tastypie包含一个信号功能,可用于自动创建ApiKey对象。 连接起来看起来像:
from django.contrib.auth.models import Userfrom django.db import modelsfrom tastypie.models import create_api_keymodels.signals.post_save.connect(create_api_key, sender=User)
django – MongoEngine _types和_cls字段
它们都是(键,值)对,它们都包含文档模型类的名称.唯一的区别是_types值是一个列表,我认为如果涉及一些继承,它可以有多个模型类名.
但问题是:当所有文档对两个字段都具有相同的值时,为什么我需要它们存在于集合中的每个文档中?
解决方法
_cls和_types字段用于标识对象所属的类.
考虑一个名为User的文档,用于存储用户的信息:
class User(Document): Meta = {'allow_inheritance': True} # stores information regarding a user
现在考虑一个名为StackOverFlowUser的文档:该文档继承自User文档,并为用户保存一些StackOverflow相关信息:
class StackOverFlowUser(User): # stores StackOverflow information of a user
对于这两个文档类,mongoengine将使用名为user的相同集合.无论您创建哪个文档对象,它都将作为文档存储在此集合中.
要区分对象所属的类,将使用_cls和_types字段.
对于User对象:
{ ... '_cls' = 'User','_types' = ['User','User.StackOverFlowUser'] }
对于StackOverFlowUser对象:
{ ... '_cls' = 'User.StackOverFlowUser','User.StackOverFlowUser'] }
如果您确定文档不具有子类文档,则将allow_inheritance设置为False,而mongoengine将不保存该文档的_cls和_types字段.
django – 使用MongoEngine创建用户注册页面
我对替代选项不感兴趣,例如MongoKit或芒果来处理身份验证.
我刚刚开始使用django和mongoDB,所以请原谅我缺乏知识.在此先感谢您的帮助!
解决方法
今天关于Django-使用mongoengine DB进行身份验证和django orm mongodb的分享就到这里,希望大家有所收获,若想了解更多关于Django Mongodb引擎:身份验证,会话和用户模型、Django Tastypie:如何使用API密钥进行身份验证、django – MongoEngine _types和_cls字段、django – 使用MongoEngine创建用户注册页面等相关知识,可以在本站进行查询。
本文标签: