Luc*_*chi 7 java authentication spring mongodb
我在使用Spring访问带有凭据的MongoDB时遇到了问题.虽然没有凭据,它就像一个魅力,使用它们只是失败说
Failed to authenticate to database [yourdatabase], username = [yourusername], password = [x******z]
Run Code Online (Sandbox Code Playgroud)
必须是因为新的auth默认值,您可以在http://docs.mongodb.org/manual/core/authentication/中阅读
在3.0版中更改:SCRAM-SHA-1是从3.0系列开始的MongoDB版本的默认机制.
问:有人发现了一种使用Spring凭证的方法吗?spring-data-mongodb您使用哪个版本来制作技巧?
Luc*_*chi 16
经过大量的尝试和阅读,我找到了一种方法,使MongoDB 3.0可以使用身份验证.
这是MongoDB 3.0的新安装,不涉及升级.
我使用了这些maven依赖项:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.6.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
作为父母
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.2.RELEASE</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
然后在我的配置文件中
/**
* DB connection Factory
*
* @return a ready to use MongoDbFactory
*/
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
// Set credentials
MongoCredential credential = MongoCredential.createCredential(mongoUser, databaseName, mongoPass.toCharArray());
ServerAddress serverAddress = new ServerAddress(mongoHost, mongoPort);
// Mongo Client
MongoClient mongoClient = new MongoClient(serverAddress,Arrays.asList(credential));
// Mongo DB Factory
SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(
mongoClient, databaseName);
return simpleMongoDbFactory;
}
/**
* Template ready to use to operate on the database
*
* @return Mongo Template ready to use
*/
@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
Run Code Online (Sandbox Code Playgroud)
最后,只要您有权访问MongoTemplate bean,您就能够做到
mongoTemplate.insert(objectToStore, collectionName);
Run Code Online (Sandbox Code Playgroud)
spring.data.mongodb.hostspring.data.mongodb.port如果您使用的是Mongo 3.0 Java驱动程序,则不受支持.在这种情况下,spring.data.mongodb.uri应该用于提供所有配置,如下所示:
spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345
Run Code Online (Sandbox Code Playgroud)
只需添加spring.data.mongodb.uri到您的application.yml,您将获得自动配置MongoDbFactory和MongoTemplate.
| 归档时间: |
|
| 查看次数: |
29515 次 |
| 最近记录: |