2013-05-13 18 views
3

我已经在我的Spring应用程序下面的工作配置:春数据的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> 

现在我想要做的是访问蒙戈数据库而不改变设置的用户名/密码我的代码(即只通过更新Spring应用上下文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 2013-05-14 21:39:54

+0

上述UserCredentials bean是否可以与副本集一起工作?似乎没有用户名/密码选择副本集? (至少对于MongoDb 2.2)http://docs.mongodb.org/v2.2/administration/replica-sets/#replica-set-security – pastafarian 2013-05-15 00:23:43

+0

我还没有玩过副本集,所以不知道如何做到这一点。 – 2013-05-15 04:01:20