ich Spring-Security
bin mit Anfragen an Authentifizieren des unter bean
mit:Abrufen von Daten aus jdbcTemplate in springsecurity
<authentication-manager>
<authentication-provider>
<password-encoder hash="sha" />
<jdbc-user-service data-source-ref="dataSource" users-by-username-query="select username,password, enabled from users where username=?" authorities-by-username-query="select u.username, a.authority from users u, authorities a where u.username = a.username and u.username =?" />
</authentication-provider>
</authentication-manager>
würde ich die Daten in der user
Tabelle, in einem gewissen Punkt, wie Boot-Up-Anwendung abrufen möge.
Hier ist die Bean, die die respektierte Datenbank aus MySQL extrahieren soll. Die Datenbank ist Setup erfolgreich:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/bank" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
Und am Ende habe ich die jdbcTemplate wie folgt:
public class JdbcUserDAO implements UserDAO{
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
@Resource(name="dataSource")
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
setJdbcTemplateDataSource();
}
private void setJdbcTemplateDataSource() {
jdbcTemplate = new JdbcTemplate(dataSource);
}
}
Die Frage ist, , wie ich die Aufzeichnungen von Benutzertabelle abrufen kann?. Ich habe this question gesehen, und ich bin nicht mit der Antwort überzeugt. Selbst wenn das Datenquellen-Bean einmal (als Singleton) erstellt wird, sollte es möglich sein, es mindestens einmal zu replizieren.
Der vollständige Code ist here, und ist das Datenbankschema.
Was will ich genau sehen, ist das Ergebnis der folgenden Abfragen:
select username, password, enabled
from users
where username = ?
select u.username, a.authority
from users u, authorities a
where u.username = a.username and u.username =?
[Schlechte Gewohnheiten zu treten: mit alten sty le JOINs] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - dieses altmodische * Komma getrennte Liste von Tabellen * Stil wurde durch die * richtige * ANSI 'JOIN' Syntax im ANSI - ** 92 ** SQL Standard ersetzt (** 25 Jahre ** vor!) und es wird davon abgeraten –