如何使django数据库通过特定的authentication_source数据库进行身份验证?

时间:2019-05-20 07:53:08

标签: django mongodb authentication mongoengine django-database

我在mongodb中有两个数据库(即test和admin)。管理员是默认数据库。我已经创建了一个管理员用户:

use admin
db.createUser(
 {
   user: "admin_1",
   pwd: "admin1234",
   roles: [ 
{ 
role: "dbOwner",
db: "test" 
},

{ 
role: "userAdminAnyDatabase",
db: "admin" 
}
]
 }
)

我已经在测试数据库中创建了另一个用户:

{ 
role: "dbOwner",
db: "test" 
}

我正在使用mongoengine和django DATABASES连接到mongodb,如下所示:

mongoengine.connect(
    db=config.main_db,
    host=config.host,
    username=config.username_test,
    password=config.password_test,
    authentication_source=config.authSource_test
)

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': config.main_db,
        'USER': config.username_test,
        'PASSWORD': config.password_test,
    }
}

这给我一个身份验证失败错误。

但是,当我在DATABASES中使用config.username_admin和config.password_admin时,效果很好。

我不明白为什么它失败了。有人可以解决这个问题吗?我已使用凭据保护了这些数据库,并遵循了this方法

我希望数据库应该使用“测试”凭据并可以工作,而不是“管理员”凭据。 另外,我想删除管理数据库中测试数据库上的dbOwner角色

我正在使用:mongodb:3.4,mongoengine:0.16,django 2.1和python3

0 个答案:

没有答案