任何用戶在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任何登錄/密碼,並從第一個正確的用戶名/密碼。
登錄:
INFO: name, password:correctUser|correctPassword
INFO: User:correctUser
INFO: name, password:jhkjhkjh|khkjhkj
INFO: User:correctUser
當你在'dataSource.getConnection(name,password)'中提供不正確的密碼時會發生什麼? – Santosh
它返回的連接沒有例外。 – kotygoroshko
我無法確定你的問題,因爲你沒有發佈完整的課程。但我想是因爲數據源仍然使用你的第一個用戶名和密碼 –