2015-11-23 26 views
2

我在啓用了授權的情況下將Python-Eve與MongoDB實例一起使用,因此我需要在settings.py中提供用戶/密碼憑證以正確初始化Python-Eve API。在Python-Eve中設置MongoDB授權配置

如果使用MONGO_URI全局配置設置,申報數據庫端點描述here它的作品恰到好處:

MONGO_URI = 'mongodb://<someuser>:<somepass>@<host>/<auth_db>' 

但是,如果我嘗試使用其他可能的方式根據夏娃的文件,這是聲明在settings.py,每個部件或URI單獨設置,如:

MONGO_HOST = <host> 
MONGO_PORT = 27017 
MONGO_DBNAME = <mongo_db> 
MONGO_USERNAME = <someuser> 
MONGO_PASSWORD = <somepass> 
MONGO_AUTHDBNAME = <auth_db> 

我得到一個錯誤類似下面:

pymongo.errors.OperationFailure: command SON([('saslStart', 1), ('mechanism', 'SCRAM-SHA-1'), ('autoAuthorize', 1), ('payload', Binary(b'n,,n=root,r=MzcxMTQ1MTM3MTExNDYwNg==', 0))]) on namespace testapp.$cmd failed: Authentication failed. 

什麼是缺少使它以這種方式工作?

回答

3

好吧,我想通了什麼是錯的,使其工作。用於檢查憑據的auth數據庫與MONGO_DBNAME相同,而不是MONGO_AUTH_DBNAME的值。所以在我的例子中,用戶必須存在於<mongo_db>數據庫中,而不是像我期待的那樣存在於<auth_db>中。

但是,那麼MONGO_AUTHDBNAME設置的目的是什麼?

1

MONGO_AUTHDBNAME對於現在不推薦使用的一些舊的MongoDB身份驗證方案很有用。欲瞭解更多信息,請參閱original pull request discussion

+0

謝謝你的信息,Nicola。 – gcw