2016-07-26 1 views
0

Я использую следующие действия для создания весенне-Rest-Монго проектаSpring загрузки MongoDB connection- удостоверение проблема с URI

Монго 3.2.7 Spring 4.3.1 пружинной загрузки 1.3.6

У меня есть созданный следующим пользователем с приведенными ниже привилегиями.

> use admin 
switched to db admin 
> db.getUser("UserAdminNew") 
{ 
     "_id" : "admin.UserAdminNew", 
     "user" : "UserAdminNew", 
     "db" : "admin", 
     "roles" : [ 
       { 
         "role" : "readWrite", 
         "db" : "admin" 
       }, 
       { 
         "role" : "root", 
         "db" : "admin" 
       }, 
       { 
         "role" : "readWrite", 
         "db" : "NEWTest" 
       } 
     ] 
} 

Application.properties

#spring.data.mongodb.uri=mongodb://UserAdminNew:Dhara12[email protected]:27017/NEWTest 

Как в загрузочном документации яровой Beyong Монго 3.x можно подключить через Ури к MongoDB, предоставляя соответствующие полномочия.

Application.java

package main.java.springmongodbdatarest; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 

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

Product.java

package main.java.springmongodbdatarest; 

import org.springframework.data.annotation.Id; 

public class Product { 

    @Id 
    private String id; 

    private String name; 
    private String title; 
    private String description; 
    private String imageUrl; 
    private double price; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getTitle() { 
     return title; 
    } 
    public void setTitle(String title) { 
     this.title = title; 
    } 
    public String getDescription() { 
     return description; 
    } 
    public void setDescription(String description) { 
     this.description = description; 
    } 
    public String getImageUrl() { 
     return imageUrl; 
    } 
    public void setImageUrl(String imageUrl) { 
     this.imageUrl = imageUrl; 
    } 
    public double getPrice() { 
     return price; 
    } 
    public void setPrice(double price) { 
     this.price = price; 
    } 



} 

ProductRepository.java

package main.java.springmongodbdatarest; 

import org.springframework.data.mongodb.repository.MongoRepository; 
import org.springframework.data.rest.core.annotation.RepositoryRestResource; 

@RepositoryRestResource(collectionResourceRel = "products", path = "products") 
public interface ProductRepository extends MongoRepository<Product, String> { 

} 

когда я запускаю мой Maven проект & ударить URL в мой местный я получаю следующий ответ

http://localhost:8080/

{ 
    "_links" : { 
    "products" : { 
     "href" : "http://localhost:8080/products{?page,size,sort}", 
     "templated" : true 
    }, 
    "profile" : { 
     "href" : "http://localhost:8080/alps" 
    } 
    } 

}

http://localhost:8080/products

Whitelabel Error Page 

This application has no explicit mapping for /error, so you are seeing this as a fallback. 

Tue Jul 26 11:12:02 IST 2016 

There was an unexpected error (type=Internal Server Error, status=500). 

{ "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "not authorized on test to execute command { count: \"product\", query: {} }" , "code" : 13} 

Как вы можете см., даже если db i ha ve said is NEWTest в application.properties Сообщение об ошибке явно указывает на невозможность вставить по умолчанию db «test»

Возможно, я мог бы пропустить что-то, из-за которого он не принимает указанные учетные данные db n.

Пожалуйста, предлагайте. Спасибо в Advance.

стек Ошибка

2016-07-26 12:16:48.300 ERROR 8468 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Reque 
rocessing failed; nested exception is com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "not authorized on test to execute command { count: \"produc 
query: {} }" , "code" : 13}] with root cause 

com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "not authorized on test to execute command { count: \"product\", query: {} }" , "code" : 13} 
     at com.mongodb.CommandResult.getException(CommandResult.java:76) 
     at com.mongodb.CommandResult.throwOnError(CommandResult.java:131) 
     at com.mongodb.DBCollection.getCount(DBCollection.java:1198) 
     at com.mongodb.DBCollection.getCount(DBCollection.java:1153) 
     at com.mongodb.DBCollection.getCount(DBCollection.java:1137) 
     at com.mongodb.DBCollection.getCount(DBCollection.java:1106) 
     at com.mongodb.DBCollection.count(DBCollection.java:1027) 
     at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.count(SimpleMongoRepository.java:146) 
     at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.findAll(SimpleMongoRepository.java:216) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:436) 
     at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:421) 
     at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:393) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
     at org.springframework.data.repository.core.support.RepositoryFactorySupport$DefaultMethodInvokingMethodInterceptor.invoke(RepositoryFactorySupport.java:506) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
     at com.sun.proxy.$Proxy76.findAll(Unknown Source) 
     at org.springframework.data.rest.core.invoke.PagingAndSortingRepositoryInvoker.invokeFindAll(PagingAndSortingRepositoryInvoker.java:66) 
     at org.springframework.data.rest.webmvc.RepositoryEntityController.getCollectionResource(RepositoryEntityController.java:172) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) 
     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 

Добавление При подключении к Монго с вне --auth все работает отлично & может выполнять прибудете после удаления.

> use NEWTest 
switched to db NEWTest 
> show collections 
Friends 
product 
users 
usersD 
> db.product.find().pretty(); 
{ 
     "_id" : ObjectId("5797350f0206e6b7ef7a118a"), 
     "_class" : "main.java.springmongodbdatarest.Product", 
     "name" : "NEW GLASS", 
     "title" : "Beatiful Blue Glass ", 
     "imageUrl" : "http://img.com", 
     "price" : 5 
} 
> 

ответ

0

Вы должны использовать spring.data.mongodb.username и spring.data.mongodb.password в приложении.

Полный application.properties пример: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

+0

Я попробовал, что уже и не работает out.Noticed в ссылке ниже, что, по-видимому работает до Монго 2.x, где, как я haveMongo 3.x Вы можете установить свойство spring.data.mongodb.uri, чтобы изменить URL-адрес и настроить дополнительные параметры, такие как набор реплик: но это также принимает тест по умолчанию db spring.data.mongodb.uri = mongodb: // пользователь: [email protected]: 12345, mongo2.example.com: 23456/тест http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-nosql .html – Noob101

+0

Можете ли вы проверить подключение базы данных mongo к чему-то еще, например, проекту nodejs? (пример: https://scotch.io/tutorials/an-introduction-to-mongodb#using-in-a-nodejs-application) или инструмент администрирования графического интерфейса mongodb, например https://robomongo.org/ –

+0

Я могу подключиться & выполнить post get delete, если я подключаюсь к monogo Db без учетных данных. Только когда мой mongodb запущен на --auth, я пытаюсь предоставить учетные данные через файл свойств, с которыми мне приходится сталкиваться. Следовательно, я думаю, что я должен быть проблемой конфигурации с моей стороны, каким образом можно указать имя пользователя и пароль. – Noob101