Любой пользователь имеет логин/пароль в базе данных Oracle. У меня есть код:Как проверить логин и пароль от DataSource?
Connection con;
Statement stmt = null;
String query = "SELECT user FROM dual";
try {
dataSource = (DataSource) new InitialContext().lookup("jdbc/MyDataSource");
} catch (NamingException e) {
throw new ExceptionInInitializerError(e);
}
try {
System.out.println("name, password:" + name + "|" + password);
con = dataSource.getConnection(name, password);
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println("User:" + rs.getString("USER"));
}
con.close();
return true;
} catch (SQLException ex) {
Logger.getLogger(UserInfoServiceOracle.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
Если я ставлю правильный пароль, следующий пользователь может GetConnection с помощью любого логина/пароля и с логином/паролем от первого правильного пользователя.
Log:
INFO: name, password:correctUser|correctPassword
INFO: User:correctUser
INFO: name, password:jhkjhkjh|khkjhkj
INFO: User:correctUser
Что происходит, если вы отправляете неверный пароль в 'dataSource.getConnection (имя, пароль)'? – Santosh
Он возвратил соединение без исключения. – kotygoroshko
Я не могу точно сказать, в чем проблема, потому что вы не публикуете свои полные классы. Но я думаю, причина в том, что источник данных все еще подключен, используя ваше первое имя пользователя и пароль –