2013-05-13 2 views
3

내 봄 응용 프로그램에서 다음 작업 구성했다 : 내가하고 싶은 모든 변경하지 않고 몽고 데이터베이스에 액세스하기위한 사용자 이름/암호를 설정하려면 지금봄 데이터 MongoDB의 : MongoDB의 액세스를위한 추가 자격 증명

<mongo:mongo id="myRs" replica-set="myhost:27017"> 

    <mongo:options max-wait-time="1500" 
        connect-timeout="30000" /> 
</mongo:mongo> 

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <property name="writeResultChecking" value="EXCEPTION"/> 
    <property name="writeConcern" value="FSYNC_SAFE"/> 
    <constructor-arg ref="myRs"/> 
    <constructor-arg name="databaseName" value="mydb"/> 
</bean> 

입니다 내 코드 (즉, 스프링 애플 리케이션 컨텍스트 xml 파일을 업데이트하여). 그게 가능하니? 그렇다면 어떻게?

감사합니다.

답변

6

이와 같이 사용자 이름 암호를 MongoTemplate에 전달할 수 있습니다. PropertyPlaceholderConfigurer을 사용하면 속성 파일에서 사용자 이름과 암호를 읽을 수도 있습니다.

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <property name="writeResultChecking" value="EXCEPTION"/> 
    <property name="writeConcern" value="FSYNC_SAFE"/> 
    <constructor-arg ref="myRs"/> 
    <constructor-arg name="databaseName" value="mydb"/> 
    <constructor-arg name="userCredentials" ref="userCredentials"/> 
</bean> 

<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials"> 
    <constructor-arg name="username" value="username" /> 
    <constructor-arg name="password" value="password" /> 
</bean> 
+0

고맙습니다. 이제 DB 측에서 사용자를 설정해야합니다. 각 환경에 복제 세트가 있습니다. mongo shell을 사용하여 각 mongo master에 자격 증명을 수동으로 추가해야합니까? 더 좋은 방법이 있습니까? – pastafarian

+0

위의 UserCredentials Bean은 복제 세트에서 작동합니까? 복제 세트에 대한 사용자 이름/암호 선택이없는 것 같습니다. (MongoDb 2.2 이상인 경우) http://docs.mongodb.org/v2.2/administration/replica-sets/#replica-set-security – pastafarian

+0

복제본 세트를 가지고 놀지 않아서 어떻게 할 수 있는지 잘 모르겠습니다. –