MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Lỗi xác thực khi truy cập mongodb thông qua ứng dụng Spring Boot

Tôi đã tìm thấy vấn đề. Để hoàn thiện chủ đề này, tôi sẽ chia sẻ câu trả lời, bao gồm cả mã. Vấn đề là tôi đã sử dụng thuộc tính ứng dụng spring.data.mongodb.uri sai:nó không có tên người dùng và mật khẩu trong URI, do tôi nhầm lẫn tin rằng spring.data.mongodb.username và spring.data.mongodb.password đã che đậy điều đó. Vì vậy, hoặc sử dụng uri với tên người dùng và mật khẩu, hoặc sử dụng máy chủ và cơ sở dữ liệu (và có thể cả cổng) thuộc tính mùa xuân một cách rõ ràng. Đây là mã. Nó sẽ hoạt động trong ứng dụng khởi động mùa xuân với hỗ trợ mongoDB (sử dụng khởi tạo hoặc IntelliJ để tạo dự án đó). Tôi có một mô hình:

package net.IndyStef.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "person")
public class Person {

@Id
private String id;

private String name;
private Integer age;

public Person() {
}

public Person(String id) {
    this.id = id;
}

public Person(String id, String name, Integer age) {
    this.id = id;
    this.name = name;
    this.age = age;
}

... getters/setters omitted for breverity ...
}

Dữ liệu được đọc và ghi thông qua một kho lưu trữ:

package net.IndyStef.repository;

import net.okrongli.model.Person;
import org.springframework.data.mongodb.repository.MongoRepository;

/**
 * Created by IndyStef on 23/08/16.
 */
public interface PersonRepository extends MongoRepository<Person, String> {
}

Tên cơ sở dữ liệu, máy chủ và thông tin đăng nhập có trong tệp application.properties:

spring.data.mongodb.host=192.168.1.90
spring.data.mongodb.database=people
spring.data.mongodb.username=user
spring.data.mongodb.password=password
#spring.data.mongodb.uri=mongodb://192.168.1.90/people

Điều quan trọng là không trộn lẫn uri với cơ sở dữ liệu và tên người dùng. Nếu bạn sử dụng uri, nó cần bao gồm tên người dùng và mật khẩu, như sau:

spring.data.mongodb.uri=mongodb://user:[email protected]/people

Để kiểm tra điều này, tôi đã sử dụng một trình chạy dòng lệnh Spring đơn giản:

package net.IndyStef;

import net.IndyStef.model.Person;
import net.IndyStef.repository.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.List;

@SpringBootApplication
public class MongoDbTestApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(MongoDbTestApplication.class, args);
    }

    @Autowired
    private PersonRepository repository;

    @Override
    public void run(String... args) {

        repository.save(new Person("peter.pan", "Peter Pan", 865));

        List<Person> people = repository.findAll();

        for (Person person: people) {
            System.out.println(person);
        }
    }
}

Tôi hy vọng lời giải thích này sẽ giúp ích cho những người khác không thể tìm ra, như bản thân tôi trong một vài ngày.

Cảm ơn,

Stefan



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cosmos DB Mongo API Cách quản lý Tỷ lệ Yêu cầu là Điều kiện lớn

  2. nhiều giao dịch tài liệu không hoạt động trong c # bằng máy chủ cộng đồng mongodb 4.08

  3. Làm cách nào để bạn thiết lập bộ bản sao Mongo trên Kubernetes?

  4. Cần hướng dẫn về tra cứu tổng hợp mongo để đếm các nốt con trong tất cả các nút con cho mỗi nút

  5. dịch vụ mongodb không khởi động