0
여기에 특정 사용자의 로그인 세부 정보를 확인하려고합니다.어떻게 MongoSecurityException을 잡을 수 있습니까?
이것은 제대로 작동하지 않습니다. 이유가 무엇인지 모르겠지만 MongoSecurityException
이 있더라도 catch 블록에 도달 할 수 없습니다. 누군가 왜 그 이유를 알고 있습니까?
try{
MongoCredential credential = MongoCredential.createCredential("user", "admin",
"password".toCharArray());
ServerAddress address = new ServerAddress("localhost", 27017);
mongoClient = new MongoClient(address, Arrays.asList(credential));
}catch (MongoSecurityException e) {
e.printStackTrace();
}
업데이트 :
스택 추적 :
May 24, 2017 1:01:08 AM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
May 24, 2017 1:01:08 AM com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server localhost:27017
com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='test', source='admin', password=<hidden>, mechanismProperties={}}
at com.mongodb.connection.SaslAuthenticator.wrapInMongoSecurityException(SaslAuthenticator.java:157)
at com.mongodb.connection.SaslAuthenticator.access$200(SaslAuthenticator.java:37)
at com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:66)
at com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:44)
at com.mongodb.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:162)
at com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:44)
at com.mongodb.connection.DefaultAuthenticator.authenticate(DefaultAuthenticator.java:32)
at com.mongodb.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:109)
at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:46)
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:116)
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server localhost:27017. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }
at com.mongodb.connection.CommandHelper.createCommandFailureException(CommandHelper.java:170)
at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:123)
at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32)
at com.mongodb.connection.SaslAuthenticator.sendSaslStart(SaslAuthenticator.java:117)
at com.mongodb.connection.SaslAuthenticator.access$000(SaslAuthenticator.java:37)
at com.mongodb.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:50)
... 9 more
을 처리 할 수
당신은 '기적'처리하는 MongoTimeoutException 기다릴 수 있습니까? MongoSecurityException이 try 블록에서 던져지고 다른 곳에서 던져지지 않았습니까? – quinz
무엇이 문제입니까? 당신은 MongoSecurityException을 잡아 그것을 잡아서 stacktrace를 출력한다. 그것은 당신의 코드입니다. 또는 stacktrace를 어디에서 가져 왔습니까? –
I ' m 잡기가 어렵습니다. ' 어디에서 스택 추적을 가져 왔는지 알 수 없습니다. catch 블록에서 다른 작업을 시도했을 때 ' t를 얻었습니다. 시도했을 때 ... catch (MongoSecurityException e) { System.out.println ("Access denied"); } 연결이 설정되었는지 여부를 아는 것만으로 실제로 인쇄하지 않고 실제로 원하는 작업을 인쇄하지 못했습니다. – Max