2013-09-07 86 views
7

Tôi có một máy chủ Mongodb chạy trên máy chủ cục bộ, không có xác thực (mục đích thử nghiệm). Trong dự án Java của tôi, tôi đã thêm một trường xác thực vào nó (để người dùng có thể sửa đổi một cấu hình, và nếu nó ở chế độ tin cậy, hãy để trống nó). Vấn đề là, nó bị từ chối, và trong MongoDB, tôi nhận được:Xác thực Mongodb với chế độ tin cậy không thành công trong Java

Sat 07 tháng chín 15: 04: 17,018 [conn4] lĩnh vực thiếu/loại sai trong nhận authenticat e lệnh TestDB

Tôi biết tại sao điều này xảy ra, nhưng tôi không thể nghĩ ra một cách để ngăn chặn nó. Lý do nó xảy ra là vì db.authenticate() trả về false nếu ủy quyền không thành công HOẶC nếu kiểm tra xác thực đã thành công với các thông tin đăng nhập khác nhau. Trong MongoDB console, tôi có được quyền này trước khi lỗi trên:

Sat 07 Tháng Chín 15: 04: 17,010 [initandlisten] kết nối được chấp nhận từ 127.0.0.1:53602 # 4 (2 kết nối bây giờ mở)

Một trong các kết nối sẽ là trình bao của tôi và dự án còn lại là dự án. Dưới đây là mã Java của tôi:

boolean auth = 
db.authenticate(getConfig().getString("Database.username", ""), 
getConfig().getString("Database.password", "").toCharArray()); 
     if (!db.isAuthenticated() && auth == false) { 
       // Stop the application 
     } 

tôi phải ngăn chặn nó để ngăn chặn giao diện điều khiển từ nhận xấu xí. Tôi không hiểu tại sao:

!db.isAuthenticated() 

Không hoạt động. Điều đó nên đã dừng nó khỏi vô hiệu hóa. Giá như có ai có thể giúp được thì tốt quá!

+0

Bạn đã tìm thấy một giải pháp cho điều này ?? – Jhanvi

Trả lời

0

Tôi có vấn đề này và cố định nó bằng cách thay thế những trong tính ứng dụng của tôi:

spring.data.mongodb.database=test 
spring.data.mongodb.host=localhost 
spring.data.mongodb.password= 
spring.data.mongodb.port=27017 
spring.data.mongodb.username= 

Với:

spring.data.mongodb.uri=mongodb://localhost/test