2015-05-07 4 views
0

У меня есть проблема с Spring MongoDB авторизации процесса - попытки восстановить данные через REST API привели к ответу:авторизации Spring MongoDB не удалось

"error": "Internal Server Error", 
"exception": "org.springframework.data.mongodb.CannotGetMongoDbConnectionException", 
"message": "Failed to authenticate to database [testdb], username = [test_user], password = [t**t]" 

Я установлен и настроен MongoDB. Это мой MongoDB конфигурационный файл:

systemLog: 
    destination: file 
    logAppend: true 
    path: C:\Program Files\MongoDB\data\log\mongod.log 
    timeStampFormat: iso8601-utc 

storage: 
    dbPath: C:\Program Files\MongoDB\data\db 
    journal: 
     enabled: true 

processManagement: 
    # fork: true 
    pidFilePath: C:\Program Files\MongoDB\mongod.pid 

net: 
    port: 27017 
    bindIp: 127.0.0.1 

security: 
    authorization: enabled 

Следующий шаг я создал пользователя с правами администратора и пользователя для testdb базы данных:

> use admin 
switched to db admin 
> db.createUser({user: "admin", pwd: "qwerty", roles: ["root"]}) 
Successfully added user: { "user" : "admin", "roles" : [ "root" ] } 
> use testdb 
switched to db testdb 
> db.createUser({user: "test_user", pwd: "test", roles: [{role: "readWrite", db: "testdb"}]}) 
Successfully added user: { 
     "user" : "test_user", 
     "roles" : [ 
       { 
         "role" : "readWrite", 
         "db" : "testdb" 
       } 
     ] 
} 

POM файл:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.rest</groupId> 
    <artifactId>spring-rest-api</artifactId> 
    <version>1.0</version> 
    <packaging>war</packaging> 

    <properties> 
     <!-- Enable Java 8 --> 
     <java.version>1.8</java.version> 
     <guava.version>18.0</guava.version> 
     <hamcrest.version>1.3</hamcrest.version> 
     <mockito.version>1.9.5</mockito.version> 
     <assertj.version>1.7.0</assertj.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <!-- Configure the main class of our Spring Boot application --> 
     <start-class>org.wixanz.App</start-class> 
    </properties> 

    <!-- Inherit defaults from Spring Boot --> 
    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.3.RELEASE</version> 
    </parent> 

    <dependencies> 
     <!-- Get the dependencies of a web application --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <!-- Spring Data MongoDB--> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-mongodb</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <scope>test</scope> 
      <exclusions> 
       <exclusion> 
        <groupId>org.hamcrest</groupId> 
        <artifactId>hamcrest-core</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.hamcrest</groupId> 
      <artifactId>hamcrest-all</artifactId> 
      <version>${hamcrest.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.assertj</groupId> 
      <artifactId>assertj-core</artifactId> 
      <version>${assertj.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-core</artifactId> 
      <version>${mockito.version}</version> 
      <scope>test</scope> 
      <exclusions> 
       <exclusion> 
        <groupId>org.hamcrest</groupId> 
        <artifactId>hamcrest-core</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <!-- Util --> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>${guava.version}</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <!-- Spring Boot Maven Support --> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

файл конфигурации MongoDB Java:

@Configuration 
@PropertySource("classpath:mongodb.properties") 
public class MongoDBConfig { 

    @Autowired 
    Environment env; 

    @Bean 
    public MongoDbFactory mongoDbFactory() throws Exception { 

     UserCredentials userCredentials = new UserCredentials(env.getProperty("mongodb.username"), env.getProperty("mongodb.password")); 
     MongoClient mongo = new MongoClient(env.getProperty("mongodb.host"), Integer.parseInt(env.getProperty("mongodb.port"))); 
     return new SimpleMongoDbFactory(mongo, env.getProperty("mongodb.db"), userCredentials); 
    } 

    @Bean 
    public MongoTemplate mongoTemplate() throws Exception { 
     return new MongoTemplate(mongoDbFactory()); 
    } 

} 

MongoDB.properties файл в проекте:

mongodb.host=localhost 
mongodb.port=27017 
mongodb.db=testdb 
mongodb.username=test_user 
mongodb.password=test 

Если я пытаюсь подключиться к базе данных testdb без реализации UserCredential, чем соединение успешно установлено и полученных данных.

Что мне нужно, чтобы исправить это авторизационное соединение базы данных прошло успешно?

ответ

0
Connect to mongoDb 

Монго 127.0.0.1:27017

Создать пользователь Перейти к MongoDB консоли и удалите текущую пользователь & набора authSchema версии 3 вместо 5, следующих команд в консоли Монго -

монго использование админ

db.system.users.remove ({}) < == удаление всех пользователей

db.system.version.remove ({}) < == удаление текущей версии

db.system.version.insert ({ "_id": "authSchema", "CurrentVersion": 3})

Создать пользователя:

использование тест-DEV-дб

db.createUser ( { пользователь: "корень", PWD: "bnuy93JoLJjiop", роли: [ "READWRITE", "dbAdmin"] } )

Смежные вопросы