2016-11-06 4 views
1

mongoengine 인증 데이터베이스를 사용하는 mongodb 데이터베이스에 연결하는 방법을 모르겠습니다.mongoengine 인증 데이터베이스 사용

명령 프롬프트에서 mongo hostname:27017/myApp -u "test" -p "test" --authenticationDatabase admin을 수행해야하지만 mongoengine의 인수로 전달할 곳이 어디인지 알 수 없으므로 인증을 위해 관리 데이터베이스를 사용하지만 내 모델의 myApp 데이터베이스에 연결 하시겠습니까?

https://api.mongodb.com/python/current/examples/authentication.html

>>> from pymongo import MongoClient 
>>> client = MongoClient('example.com') 
>>> db = client.the_database 
>>> db.authenticate('user', 'password', source='source_database') 

나는이 mongoengine에 추가 당김 요청 발견 :

https://github.com/MongoEngine/mongoengine/pull/590/files

그것을

나는 그것이 PyMongo 가이드에 설명 어디에이 믿고 여러분은 connect에 대한 인수로 authentication_source을와 같이 추가하는 것처럼 보입니다.. 문서화가 잘 되었다면 좋을 것입니다. mongoengine connecting guide에 따르면

http://docs.mongoengine.org/apireference.html?highlight=authentication_source

답변

4

connect() 방식 지원 URI 스타일 연결.

"mongodb://username:[email protected]:port1/database?authSource=source_database" 

더 MongoDB를 URI의 예는 또한 MongoDB connection string URI 참조 : 즉 그런 의미에서

connect(
    'project1' 
    host='mongodb://username:[email protected]:port1/databaseName' 
) 

, 당신은 또한 다음과 같이 인증 소스 데이터베이스를 지정할 수 있습니다. 또한 Authentication options through connection string

+0

, 인증 소스를 명시 적으로 언급 할 필요가있다 그래서 당신은 업데이트 – Rob

+1

@ 롭 작동하지 않습니다 보낸 것. URI를 통해 인증 소스를 지정하는 링크에서 정보를 추출했습니다. –

1

제안 된 해결책은 저에게 적합하지 않습니다. 작동 원리 : pymongo MongoClient 메소드에서와 같이 authSource 인수를 connect 메소드에 추가하기 만하면됩니다. 예 :

이 내가 부탁 해요 것이 아니다
connect('database_name', host='host', username="username", 
password="password",authSource='authentication_database_name')