Как сделать так, чтобы база данных django проходила аутентификацию через конкретную базу данных authentication_source? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть две базы данных (а именно, test и admin) в mongodb. 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 для подключения к 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,
    }
}

Это дает мне ошибку аутентификации.

Однако, когда я использую config.username_admin и config.password_admin в БАЗАХ ДАННЫХ, все работает нормально.

Я не понимаю, почему это не удается. Кто-нибудь может это исправить? Я защитил эти БД с помощью учетных данных и следовал этому методу

Я ожидаю, что БАЗЫ ДАННЫХ должны принимать «тестовые» учетные данные и работать, а не «административные» учетные данные. Также я хочу удалить роль dbOwner на тестовой базе данных в администраторе db

Я использую: mongodb: 3.4, mongoengine: 0.16, django 2.1 и python3

...